ADD week 5
This commit is contained in:
		| @@ -0,0 +1,485 @@ | ||||
| package androidx.recyclerview.widget; | ||||
|  | ||||
| import android.R; | ||||
| import android.animation.Animator; | ||||
| import android.animation.AnimatorListenerAdapter; | ||||
| import android.animation.ValueAnimator; | ||||
| import android.graphics.Canvas; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.graphics.drawable.StateListDrawable; | ||||
| import android.view.MotionEvent; | ||||
| import androidx.core.view.ViewCompat; | ||||
| import androidx.recyclerview.widget.RecyclerView; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class FastScroller extends RecyclerView.ItemDecoration implements RecyclerView.OnItemTouchListener { | ||||
|     private static final int ANIMATION_STATE_FADING_IN = 1; | ||||
|     private static final int ANIMATION_STATE_FADING_OUT = 3; | ||||
|     private static final int ANIMATION_STATE_IN = 2; | ||||
|     private static final int ANIMATION_STATE_OUT = 0; | ||||
|     private static final int DRAG_NONE = 0; | ||||
|     private static final int DRAG_X = 1; | ||||
|     private static final int DRAG_Y = 2; | ||||
|     private static final int HIDE_DELAY_AFTER_DRAGGING_MS = 1200; | ||||
|     private static final int HIDE_DELAY_AFTER_VISIBLE_MS = 1500; | ||||
|     private static final int HIDE_DURATION_MS = 500; | ||||
|     private static final int SCROLLBAR_FULL_OPAQUE = 255; | ||||
|     private static final int SHOW_DURATION_MS = 500; | ||||
|     private static final int STATE_DRAGGING = 2; | ||||
|     private static final int STATE_HIDDEN = 0; | ||||
|     private static final int STATE_VISIBLE = 1; | ||||
|     int mAnimationState; | ||||
|     private final Runnable mHideRunnable; | ||||
|     float mHorizontalDragX; | ||||
|     int mHorizontalThumbCenterX; | ||||
|     private final StateListDrawable mHorizontalThumbDrawable; | ||||
|     private final int mHorizontalThumbHeight; | ||||
|     int mHorizontalThumbWidth; | ||||
|     private final Drawable mHorizontalTrackDrawable; | ||||
|     private final int mHorizontalTrackHeight; | ||||
|     private final int mMargin; | ||||
|     private final RecyclerView.OnScrollListener mOnScrollListener; | ||||
|     private RecyclerView mRecyclerView; | ||||
|     private final int mScrollbarMinimumRange; | ||||
|     final ValueAnimator mShowHideAnimator; | ||||
|     float mVerticalDragY; | ||||
|     int mVerticalThumbCenterY; | ||||
|     final StateListDrawable mVerticalThumbDrawable; | ||||
|     int mVerticalThumbHeight; | ||||
|     private final int mVerticalThumbWidth; | ||||
|     final Drawable mVerticalTrackDrawable; | ||||
|     private final int mVerticalTrackWidth; | ||||
|     private static final int[] PRESSED_STATE_SET = {R.attr.state_pressed}; | ||||
|     private static final int[] EMPTY_STATE_SET = new int[0]; | ||||
|     private int mRecyclerViewWidth = 0; | ||||
|     private int mRecyclerViewHeight = 0; | ||||
|     private boolean mNeedVerticalScrollbar = false; | ||||
|     private boolean mNeedHorizontalScrollbar = false; | ||||
|     private int mState = 0; | ||||
|     private int mDragState = 0; | ||||
|     private final int[] mVerticalRange = new int[2]; | ||||
|     private final int[] mHorizontalRange = new int[2]; | ||||
|  | ||||
|     Drawable getHorizontalThumbDrawable() { | ||||
|         return this.mHorizontalThumbDrawable; | ||||
|     } | ||||
|  | ||||
|     Drawable getHorizontalTrackDrawable() { | ||||
|         return this.mHorizontalTrackDrawable; | ||||
|     } | ||||
|  | ||||
|     Drawable getVerticalThumbDrawable() { | ||||
|         return this.mVerticalThumbDrawable; | ||||
|     } | ||||
|  | ||||
|     Drawable getVerticalTrackDrawable() { | ||||
|         return this.mVerticalTrackDrawable; | ||||
|     } | ||||
|  | ||||
|     public boolean isDragging() { | ||||
|         return this.mState == 2; | ||||
|     } | ||||
|  | ||||
|     boolean isVisible() { | ||||
|         return this.mState == 1; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.recyclerview.widget.RecyclerView.OnItemTouchListener | ||||
|     public void onRequestDisallowInterceptTouchEvent(boolean z) { | ||||
|     } | ||||
|  | ||||
|     FastScroller(RecyclerView recyclerView, StateListDrawable stateListDrawable, Drawable drawable, StateListDrawable stateListDrawable2, Drawable drawable2, int i, int i2, int i3) { | ||||
|         ValueAnimator ofFloat = ValueAnimator.ofFloat(0.0f, 1.0f); | ||||
|         this.mShowHideAnimator = ofFloat; | ||||
|         this.mAnimationState = 0; | ||||
|         this.mHideRunnable = new Runnable() { // from class: androidx.recyclerview.widget.FastScroller.1 | ||||
|             @Override // java.lang.Runnable | ||||
|             public void run() { | ||||
|                 FastScroller.this.hide(500); | ||||
|             } | ||||
|         }; | ||||
|         this.mOnScrollListener = new RecyclerView.OnScrollListener() { // from class: androidx.recyclerview.widget.FastScroller.2 | ||||
|             @Override // androidx.recyclerview.widget.RecyclerView.OnScrollListener | ||||
|             public void onScrolled(RecyclerView recyclerView2, int i4, int i5) { | ||||
|                 FastScroller.this.updateScrollPosition(recyclerView2.computeHorizontalScrollOffset(), recyclerView2.computeVerticalScrollOffset()); | ||||
|             } | ||||
|         }; | ||||
|         this.mVerticalThumbDrawable = stateListDrawable; | ||||
|         this.mVerticalTrackDrawable = drawable; | ||||
|         this.mHorizontalThumbDrawable = stateListDrawable2; | ||||
|         this.mHorizontalTrackDrawable = drawable2; | ||||
|         this.mVerticalThumbWidth = Math.max(i, stateListDrawable.getIntrinsicWidth()); | ||||
|         this.mVerticalTrackWidth = Math.max(i, drawable.getIntrinsicWidth()); | ||||
|         this.mHorizontalThumbHeight = Math.max(i, stateListDrawable2.getIntrinsicWidth()); | ||||
|         this.mHorizontalTrackHeight = Math.max(i, drawable2.getIntrinsicWidth()); | ||||
|         this.mScrollbarMinimumRange = i2; | ||||
|         this.mMargin = i3; | ||||
|         stateListDrawable.setAlpha(255); | ||||
|         drawable.setAlpha(255); | ||||
|         ofFloat.addListener(new AnimatorListener()); | ||||
|         ofFloat.addUpdateListener(new AnimatorUpdater()); | ||||
|         attachToRecyclerView(recyclerView); | ||||
|     } | ||||
|  | ||||
|     public void attachToRecyclerView(RecyclerView recyclerView) { | ||||
|         RecyclerView recyclerView2 = this.mRecyclerView; | ||||
|         if (recyclerView2 == recyclerView) { | ||||
|             return; | ||||
|         } | ||||
|         if (recyclerView2 != null) { | ||||
|             destroyCallbacks(); | ||||
|         } | ||||
|         this.mRecyclerView = recyclerView; | ||||
|         if (recyclerView != null) { | ||||
|             setupCallbacks(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void setupCallbacks() { | ||||
|         this.mRecyclerView.addItemDecoration(this); | ||||
|         this.mRecyclerView.addOnItemTouchListener(this); | ||||
|         this.mRecyclerView.addOnScrollListener(this.mOnScrollListener); | ||||
|     } | ||||
|  | ||||
|     private void destroyCallbacks() { | ||||
|         this.mRecyclerView.removeItemDecoration(this); | ||||
|         this.mRecyclerView.removeOnItemTouchListener(this); | ||||
|         this.mRecyclerView.removeOnScrollListener(this.mOnScrollListener); | ||||
|         cancelHide(); | ||||
|     } | ||||
|  | ||||
|     void requestRedraw() { | ||||
|         this.mRecyclerView.invalidate(); | ||||
|     } | ||||
|  | ||||
|     void setState(int i) { | ||||
|         if (i == 2 && this.mState != 2) { | ||||
|             this.mVerticalThumbDrawable.setState(PRESSED_STATE_SET); | ||||
|             cancelHide(); | ||||
|         } | ||||
|         if (i == 0) { | ||||
|             requestRedraw(); | ||||
|         } else { | ||||
|             show(); | ||||
|         } | ||||
|         if (this.mState == 2 && i != 2) { | ||||
|             this.mVerticalThumbDrawable.setState(EMPTY_STATE_SET); | ||||
|             resetHideDelay(HIDE_DELAY_AFTER_DRAGGING_MS); | ||||
|         } else if (i == 1) { | ||||
|             resetHideDelay(HIDE_DELAY_AFTER_VISIBLE_MS); | ||||
|         } | ||||
|         this.mState = i; | ||||
|     } | ||||
|  | ||||
|     private boolean isLayoutRTL() { | ||||
|         return ViewCompat.getLayoutDirection(this.mRecyclerView) == 1; | ||||
|     } | ||||
|  | ||||
|     public void show() { | ||||
|         int i = this.mAnimationState; | ||||
|         if (i != 0) { | ||||
|             if (i != 3) { | ||||
|                 return; | ||||
|             } else { | ||||
|                 this.mShowHideAnimator.cancel(); | ||||
|             } | ||||
|         } | ||||
|         this.mAnimationState = 1; | ||||
|         ValueAnimator valueAnimator = this.mShowHideAnimator; | ||||
|         valueAnimator.setFloatValues(((Float) valueAnimator.getAnimatedValue()).floatValue(), 1.0f); | ||||
|         this.mShowHideAnimator.setDuration(500L); | ||||
|         this.mShowHideAnimator.setStartDelay(0L); | ||||
|         this.mShowHideAnimator.start(); | ||||
|     } | ||||
|  | ||||
|     void hide(int i) { | ||||
|         int i2 = this.mAnimationState; | ||||
|         if (i2 == 1) { | ||||
|             this.mShowHideAnimator.cancel(); | ||||
|         } else if (i2 != 2) { | ||||
|             return; | ||||
|         } | ||||
|         this.mAnimationState = 3; | ||||
|         ValueAnimator valueAnimator = this.mShowHideAnimator; | ||||
|         valueAnimator.setFloatValues(((Float) valueAnimator.getAnimatedValue()).floatValue(), 0.0f); | ||||
|         this.mShowHideAnimator.setDuration(i); | ||||
|         this.mShowHideAnimator.start(); | ||||
|     } | ||||
|  | ||||
|     private void cancelHide() { | ||||
|         this.mRecyclerView.removeCallbacks(this.mHideRunnable); | ||||
|     } | ||||
|  | ||||
|     private void resetHideDelay(int i) { | ||||
|         cancelHide(); | ||||
|         this.mRecyclerView.postDelayed(this.mHideRunnable, i); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.recyclerview.widget.RecyclerView.ItemDecoration | ||||
|     public void onDrawOver(Canvas canvas, RecyclerView recyclerView, RecyclerView.State state) { | ||||
|         if (this.mRecyclerViewWidth != this.mRecyclerView.getWidth() || this.mRecyclerViewHeight != this.mRecyclerView.getHeight()) { | ||||
|             this.mRecyclerViewWidth = this.mRecyclerView.getWidth(); | ||||
|             this.mRecyclerViewHeight = this.mRecyclerView.getHeight(); | ||||
|             setState(0); | ||||
|         } else if (this.mAnimationState != 0) { | ||||
|             if (this.mNeedVerticalScrollbar) { | ||||
|                 drawVerticalScrollbar(canvas); | ||||
|             } | ||||
|             if (this.mNeedHorizontalScrollbar) { | ||||
|                 drawHorizontalScrollbar(canvas); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void drawVerticalScrollbar(Canvas canvas) { | ||||
|         int i = this.mRecyclerViewWidth; | ||||
|         int i2 = this.mVerticalThumbWidth; | ||||
|         int i3 = i - i2; | ||||
|         int i4 = this.mVerticalThumbCenterY; | ||||
|         int i5 = this.mVerticalThumbHeight; | ||||
|         int i6 = i4 - (i5 / 2); | ||||
|         this.mVerticalThumbDrawable.setBounds(0, 0, i2, i5); | ||||
|         this.mVerticalTrackDrawable.setBounds(0, 0, this.mVerticalTrackWidth, this.mRecyclerViewHeight); | ||||
|         if (isLayoutRTL()) { | ||||
|             this.mVerticalTrackDrawable.draw(canvas); | ||||
|             canvas.translate(this.mVerticalThumbWidth, i6); | ||||
|             canvas.scale(-1.0f, 1.0f); | ||||
|             this.mVerticalThumbDrawable.draw(canvas); | ||||
|             canvas.scale(1.0f, 1.0f); | ||||
|             canvas.translate(-this.mVerticalThumbWidth, -i6); | ||||
|             return; | ||||
|         } | ||||
|         canvas.translate(i3, 0.0f); | ||||
|         this.mVerticalTrackDrawable.draw(canvas); | ||||
|         canvas.translate(0.0f, i6); | ||||
|         this.mVerticalThumbDrawable.draw(canvas); | ||||
|         canvas.translate(-i3, -i6); | ||||
|     } | ||||
|  | ||||
|     private void drawHorizontalScrollbar(Canvas canvas) { | ||||
|         int i = this.mRecyclerViewHeight; | ||||
|         int i2 = this.mHorizontalThumbHeight; | ||||
|         int i3 = this.mHorizontalThumbCenterX; | ||||
|         int i4 = this.mHorizontalThumbWidth; | ||||
|         this.mHorizontalThumbDrawable.setBounds(0, 0, i4, i2); | ||||
|         this.mHorizontalTrackDrawable.setBounds(0, 0, this.mRecyclerViewWidth, this.mHorizontalTrackHeight); | ||||
|         canvas.translate(0.0f, i - i2); | ||||
|         this.mHorizontalTrackDrawable.draw(canvas); | ||||
|         canvas.translate(i3 - (i4 / 2), 0.0f); | ||||
|         this.mHorizontalThumbDrawable.draw(canvas); | ||||
|         canvas.translate(-r2, -r0); | ||||
|     } | ||||
|  | ||||
|     void updateScrollPosition(int i, int i2) { | ||||
|         int computeVerticalScrollRange = this.mRecyclerView.computeVerticalScrollRange(); | ||||
|         int i3 = this.mRecyclerViewHeight; | ||||
|         this.mNeedVerticalScrollbar = computeVerticalScrollRange - i3 > 0 && i3 >= this.mScrollbarMinimumRange; | ||||
|         int computeHorizontalScrollRange = this.mRecyclerView.computeHorizontalScrollRange(); | ||||
|         int i4 = this.mRecyclerViewWidth; | ||||
|         boolean z = computeHorizontalScrollRange - i4 > 0 && i4 >= this.mScrollbarMinimumRange; | ||||
|         this.mNeedHorizontalScrollbar = z; | ||||
|         boolean z2 = this.mNeedVerticalScrollbar; | ||||
|         if (!z2 && !z) { | ||||
|             if (this.mState != 0) { | ||||
|                 setState(0); | ||||
|                 return; | ||||
|             } | ||||
|             return; | ||||
|         } | ||||
|         if (z2) { | ||||
|             float f = i3; | ||||
|             this.mVerticalThumbCenterY = (int) ((f * (i2 + (f / 2.0f))) / computeVerticalScrollRange); | ||||
|             this.mVerticalThumbHeight = Math.min(i3, (i3 * i3) / computeVerticalScrollRange); | ||||
|         } | ||||
|         if (this.mNeedHorizontalScrollbar) { | ||||
|             float f2 = i4; | ||||
|             this.mHorizontalThumbCenterX = (int) ((f2 * (i + (f2 / 2.0f))) / computeHorizontalScrollRange); | ||||
|             this.mHorizontalThumbWidth = Math.min(i4, (i4 * i4) / computeHorizontalScrollRange); | ||||
|         } | ||||
|         int i5 = this.mState; | ||||
|         if (i5 == 0 || i5 == 1) { | ||||
|             setState(1); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.recyclerview.widget.RecyclerView.OnItemTouchListener | ||||
|     public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) { | ||||
|         int i = this.mState; | ||||
|         if (i == 1) { | ||||
|             boolean isPointInsideVerticalThumb = isPointInsideVerticalThumb(motionEvent.getX(), motionEvent.getY()); | ||||
|             boolean isPointInsideHorizontalThumb = isPointInsideHorizontalThumb(motionEvent.getX(), motionEvent.getY()); | ||||
|             if (motionEvent.getAction() != 0) { | ||||
|                 return false; | ||||
|             } | ||||
|             if (!isPointInsideVerticalThumb && !isPointInsideHorizontalThumb) { | ||||
|                 return false; | ||||
|             } | ||||
|             if (isPointInsideHorizontalThumb) { | ||||
|                 this.mDragState = 1; | ||||
|                 this.mHorizontalDragX = (int) motionEvent.getX(); | ||||
|             } else if (isPointInsideVerticalThumb) { | ||||
|                 this.mDragState = 2; | ||||
|                 this.mVerticalDragY = (int) motionEvent.getY(); | ||||
|             } | ||||
|             setState(2); | ||||
|         } else if (i != 2) { | ||||
|             return false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.recyclerview.widget.RecyclerView.OnItemTouchListener | ||||
|     public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) { | ||||
|         if (this.mState == 0) { | ||||
|             return; | ||||
|         } | ||||
|         if (motionEvent.getAction() == 0) { | ||||
|             boolean isPointInsideVerticalThumb = isPointInsideVerticalThumb(motionEvent.getX(), motionEvent.getY()); | ||||
|             boolean isPointInsideHorizontalThumb = isPointInsideHorizontalThumb(motionEvent.getX(), motionEvent.getY()); | ||||
|             if (isPointInsideVerticalThumb || isPointInsideHorizontalThumb) { | ||||
|                 if (isPointInsideHorizontalThumb) { | ||||
|                     this.mDragState = 1; | ||||
|                     this.mHorizontalDragX = (int) motionEvent.getX(); | ||||
|                 } else if (isPointInsideVerticalThumb) { | ||||
|                     this.mDragState = 2; | ||||
|                     this.mVerticalDragY = (int) motionEvent.getY(); | ||||
|                 } | ||||
|                 setState(2); | ||||
|                 return; | ||||
|             } | ||||
|             return; | ||||
|         } | ||||
|         if (motionEvent.getAction() == 1 && this.mState == 2) { | ||||
|             this.mVerticalDragY = 0.0f; | ||||
|             this.mHorizontalDragX = 0.0f; | ||||
|             setState(1); | ||||
|             this.mDragState = 0; | ||||
|             return; | ||||
|         } | ||||
|         if (motionEvent.getAction() == 2 && this.mState == 2) { | ||||
|             show(); | ||||
|             if (this.mDragState == 1) { | ||||
|                 horizontalScrollTo(motionEvent.getX()); | ||||
|             } | ||||
|             if (this.mDragState == 2) { | ||||
|                 verticalScrollTo(motionEvent.getY()); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void verticalScrollTo(float f) { | ||||
|         int[] verticalRange = getVerticalRange(); | ||||
|         float max = Math.max(verticalRange[0], Math.min(verticalRange[1], f)); | ||||
|         if (Math.abs(this.mVerticalThumbCenterY - max) < 2.0f) { | ||||
|             return; | ||||
|         } | ||||
|         int scrollTo = scrollTo(this.mVerticalDragY, max, verticalRange, this.mRecyclerView.computeVerticalScrollRange(), this.mRecyclerView.computeVerticalScrollOffset(), this.mRecyclerViewHeight); | ||||
|         if (scrollTo != 0) { | ||||
|             this.mRecyclerView.scrollBy(0, scrollTo); | ||||
|         } | ||||
|         this.mVerticalDragY = max; | ||||
|     } | ||||
|  | ||||
|     private void horizontalScrollTo(float f) { | ||||
|         int[] horizontalRange = getHorizontalRange(); | ||||
|         float max = Math.max(horizontalRange[0], Math.min(horizontalRange[1], f)); | ||||
|         if (Math.abs(this.mHorizontalThumbCenterX - max) < 2.0f) { | ||||
|             return; | ||||
|         } | ||||
|         int scrollTo = scrollTo(this.mHorizontalDragX, max, horizontalRange, this.mRecyclerView.computeHorizontalScrollRange(), this.mRecyclerView.computeHorizontalScrollOffset(), this.mRecyclerViewWidth); | ||||
|         if (scrollTo != 0) { | ||||
|             this.mRecyclerView.scrollBy(scrollTo, 0); | ||||
|         } | ||||
|         this.mHorizontalDragX = max; | ||||
|     } | ||||
|  | ||||
|     private int scrollTo(float f, float f2, int[] iArr, int i, int i2, int i3) { | ||||
|         int i4 = iArr[1] - iArr[0]; | ||||
|         if (i4 == 0) { | ||||
|             return 0; | ||||
|         } | ||||
|         int i5 = i - i3; | ||||
|         int i6 = (int) (((f2 - f) / i4) * i5); | ||||
|         int i7 = i2 + i6; | ||||
|         if (i7 >= i5 || i7 < 0) { | ||||
|             return 0; | ||||
|         } | ||||
|         return i6; | ||||
|     } | ||||
|  | ||||
|     boolean isPointInsideVerticalThumb(float f, float f2) { | ||||
|         if (!isLayoutRTL() ? f >= this.mRecyclerViewWidth - this.mVerticalThumbWidth : f <= this.mVerticalThumbWidth / 2) { | ||||
|             int i = this.mVerticalThumbCenterY; | ||||
|             int i2 = this.mVerticalThumbHeight; | ||||
|             if (f2 >= i - (i2 / 2) && f2 <= i + (i2 / 2)) { | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     boolean isPointInsideHorizontalThumb(float f, float f2) { | ||||
|         if (f2 >= this.mRecyclerViewHeight - this.mHorizontalThumbHeight) { | ||||
|             int i = this.mHorizontalThumbCenterX; | ||||
|             int i2 = this.mHorizontalThumbWidth; | ||||
|             if (f >= i - (i2 / 2) && f <= i + (i2 / 2)) { | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     private int[] getVerticalRange() { | ||||
|         int[] iArr = this.mVerticalRange; | ||||
|         int i = this.mMargin; | ||||
|         iArr[0] = i; | ||||
|         iArr[1] = this.mRecyclerViewHeight - i; | ||||
|         return iArr; | ||||
|     } | ||||
|  | ||||
|     private int[] getHorizontalRange() { | ||||
|         int[] iArr = this.mHorizontalRange; | ||||
|         int i = this.mMargin; | ||||
|         iArr[0] = i; | ||||
|         iArr[1] = this.mRecyclerViewWidth - i; | ||||
|         return iArr; | ||||
|     } | ||||
|  | ||||
|     private class AnimatorListener extends AnimatorListenerAdapter { | ||||
|         private boolean mCanceled = false; | ||||
|  | ||||
|         @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|         public void onAnimationCancel(Animator animator) { | ||||
|             this.mCanceled = true; | ||||
|         } | ||||
|  | ||||
|         AnimatorListener() { | ||||
|         } | ||||
|  | ||||
|         @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|         public void onAnimationEnd(Animator animator) { | ||||
|             if (this.mCanceled) { | ||||
|                 this.mCanceled = false; | ||||
|             } else if (((Float) FastScroller.this.mShowHideAnimator.getAnimatedValue()).floatValue() == 0.0f) { | ||||
|                 FastScroller.this.mAnimationState = 0; | ||||
|                 FastScroller.this.setState(0); | ||||
|             } else { | ||||
|                 FastScroller.this.mAnimationState = 2; | ||||
|                 FastScroller.this.requestRedraw(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private class AnimatorUpdater implements ValueAnimator.AnimatorUpdateListener { | ||||
|         AnimatorUpdater() { | ||||
|         } | ||||
|  | ||||
|         @Override // android.animation.ValueAnimator.AnimatorUpdateListener | ||||
|         public void onAnimationUpdate(ValueAnimator valueAnimator) { | ||||
|             int floatValue = (int) (((Float) valueAnimator.getAnimatedValue()).floatValue() * 255.0f); | ||||
|             FastScroller.this.mVerticalThumbDrawable.setAlpha(floatValue); | ||||
|             FastScroller.this.mVerticalTrackDrawable.setAlpha(floatValue); | ||||
|             FastScroller.this.requestRedraw(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user