Skip to content
This repository has been archived by the owner on Feb 25, 2022. It is now read-only.

Commit

Permalink
Fix FastScroll onTouchEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
seven332 committed Oct 6, 2015
1 parent 738f727 commit 4cf3112
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions app/src/main/java/com/hippo/widget/recyclerview/FastScroller.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@ public class FastScroller extends View {
private int mHandlerOffset = INVALID;
private int mHandlerHeight = INVALID;

private int mDownX = INVALID;
private int mDownY = INVALID;
private float mDownX = INVALID;
private float mDownY = INVALID;

private int mLastMotionY = INVALID;
private float mLastMotionY = INVALID;

private boolean mDragged = false;

Expand All @@ -73,12 +73,12 @@ public void run() {
mDragged = true;

SimpleHandler.getInstance().removeCallbacks(mHideRunnable);
int y = mDownY;
float y = mDownY;
if (y < mHandlerOffset || y >= mHandlerOffset + mHandlerHeight) {
// the point out of handler, make the point in handler center
int range = mRecyclerView.computeVerticalScrollRange();
if (range > 0) {
int scroll = range * (y - (mHandlerOffset + mHandlerHeight / 2)) / (getHeight() - getPaddingTop() - getPaddingBottom());
int scroll = (int) (range * (y - (mHandlerOffset + mHandlerHeight / 2)) / (getHeight() - getPaddingTop() - getPaddingBottom()));
mRecyclerView.scrollBy(0, scroll);
}
}
Expand Down Expand Up @@ -340,18 +340,18 @@ public boolean onTouchEvent(MotionEvent event) {
switch (action) {
case MotionEvent.ACTION_DOWN: {
mDragged = false;
mDownX = (int) event.getX();
mDownY = (int) event.getY();
mDownX = event.getX();
mDownY = event.getY();
mSimpleHandler.postDelayed(mCheckForDragRunnable, SCROLL_BAR_DRAG_TIMEOUT);
break;
}
case MotionEvent.ACTION_MOVE: {
if (!mDragged) {
// mCheckForDragRunnable has not been called
mSimpleHandler.removeCallbacks(mCheckForDragRunnable);
int x = (int) event.getX();
int y = (int) event.getY();
if (Math.abs(x - mDownX) >= Math.abs(y - mDownY)) {
float x = event.getX();
float y = event.getY();
if (Math.abs(x - mDownX) > Math.abs(y - mDownY)) {
mCantDrag = true;
return false;
} else {
Expand All @@ -371,8 +371,8 @@ public boolean onTouchEvent(MotionEvent event) {
if (range <= 0) {
break;
}
int y = (int) event.getY();
int scroll = range * (y - mLastMotionY) / (getHeight() - getPaddingTop() - getPaddingBottom());
float y = event.getY();
int scroll = (int) (range * (y - mLastMotionY) / (getHeight() - getPaddingTop() - getPaddingBottom()));
mRecyclerView.scrollBy(0, scroll);
mLastMotionY = y;
break;
Expand Down

0 comments on commit 4cf3112

Please sign in to comment.