diff --git a/Phoenix/src/main/java/com/yalantis/phoenix/PullToRefreshView.java b/Phoenix/src/main/java/com/yalantis/phoenix/PullToRefreshView.java index 4d33313..8b29b4b 100644 --- a/Phoenix/src/main/java/com/yalantis/phoenix/PullToRefreshView.java +++ b/Phoenix/src/main/java/com/yalantis/phoenix/PullToRefreshView.java @@ -56,10 +56,6 @@ public class PullToRefreshView extends ViewGroup { */ private int mCurrentOffsetTop; - public boolean isRefreshing() { - return mRefreshing; - } - private boolean mRefreshing; private int mActivePointerId; private boolean mIsBeingDragged; @@ -76,6 +72,48 @@ public boolean isRefreshing() { private int finishRefreshToPauseDuration = 0; + private final Animation mAnimateToStartPosition = new Animation() { + @Override + public void applyTransformation(float interpolatedTime, Transformation t) { + moveToStart(interpolatedTime); + } + }; + + private final Animation mAnimateToCorrectPosition = new Animation() { + @Override + public void applyTransformation(float interpolatedTime, Transformation t) { + int targetTop; + int endTarget = mTotalDragDistance; + targetTop = mFrom + (int) ((endTarget - mFrom) * interpolatedTime); + int offset = targetTop - mTarget.getTop(); + + mCurrentDragPercent = mFromDragPercent - (mFromDragPercent - 1.0f) * interpolatedTime; + mBaseRefreshView.setPercent(mCurrentDragPercent, false); + if (mListener != null) { + float pos = mFrom + (endTarget - mFrom) * interpolatedTime; + mListener.ondragDistanceChange(pos, + mCurrentDragPercent, (pos - mTarget.getTop()) / mTotalDragDistance); + } + setTargetOffsetTop(offset, false /* requires update */); + } + }; + + private Animation.AnimationListener mToStartListener = new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + + @Override + public void onAnimationEnd(Animation animation) { + mBaseRefreshView.stop();//停止RefreshView的加载动画 + mCurrentOffsetTop = mTarget.getTop();//更新mCurrentOffsetTop + } + }; + public PullToRefreshView(Context context) { this(context, null); } @@ -101,6 +139,10 @@ public PullToRefreshView(Context context, AttributeSet attrs) { ViewCompat.setChildrenDrawingOrderEnabled(this, true); } + public boolean isRefreshing() { + return mRefreshing; + } + public void setRefreshStyle(int type) { setRefreshing(false); switch (type) { @@ -340,32 +382,6 @@ private void animateOffsetToCorrectPosition() { // mTarget.setPadding(mTargetPaddingLeft, mTargetPaddingTop, mTargetPaddingRight, mTotalDragDistance); } - private final Animation mAnimateToStartPosition = new Animation() { - @Override - public void applyTransformation(float interpolatedTime, Transformation t) { - moveToStart(interpolatedTime); - } - }; - - private final Animation mAnimateToCorrectPosition = new Animation() { - @Override - public void applyTransformation(float interpolatedTime, Transformation t) { - int targetTop; - int endTarget = mTotalDragDistance; - targetTop = mFrom + (int) ((endTarget - mFrom) * interpolatedTime); - int offset = targetTop - mTarget.getTop(); - - mCurrentDragPercent = mFromDragPercent - (mFromDragPercent - 1.0f) * interpolatedTime; - mBaseRefreshView.setPercent(mCurrentDragPercent, false); - if (mListener != null) { - float pos = mFrom + (endTarget - mFrom) * interpolatedTime; - mListener.ondragDistanceChange(pos, - mCurrentDragPercent, (pos - mTarget.getTop()) / mTotalDragDistance); - } - setTargetOffsetTop(offset, false /* requires update */); - } - }; - private void moveToStart(float interpolatedTime) { int targetTop = mFrom - (int) (mFrom * interpolatedTime); float targetPercent = mFromDragPercent * (1.0f - interpolatedTime); @@ -418,22 +434,6 @@ private void setRefreshing(boolean refreshing, final boolean notify) { } } - private final Animation.AnimationListener mToStartListener = new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - } - - @Override - public void onAnimationRepeat(Animation animation) { - } - - @Override - public void onAnimationEnd(Animation animation) { - mBaseRefreshView.stop();//停止RefreshView的加载动画 - mCurrentOffsetTop = mTarget.getTop();//更新mCurrentOffsetTop - } - }; - /** * 处理多指触控的点击事件 */ diff --git a/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/PullToRefreshLayoutTellH/PullToRefreshLayout.java b/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/PullToRefreshLayoutTellH/PullToRefreshLayout.java index 671f5d7..63e3f71 100644 --- a/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/PullToRefreshLayoutTellH/PullToRefreshLayout.java +++ b/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/PullToRefreshLayoutTellH/PullToRefreshLayout.java @@ -73,6 +73,75 @@ public class PullToRefreshLayout extends ViewGroup { private int finishRefreshToPauseDuration = 0; private int mHeaderViewIndex; + + private final Animation mAnimateToStartPosition = new Animation() { + @Override + public void applyTransformation(float interpolatedTime, Transformation t) { + moveToStart(interpolatedTime); + } + }; + + private final Animation mAnimateToCorrectPosition = new Animation() { + @Override + public void applyTransformation(float interpolatedTime, Transformation t) { + int targetTop; + int endTarget = mTotalDragDistance; + targetTop = mFrom + (int) ((endTarget - mFrom) * interpolatedTime); + int offset = targetTop - mTarget.getTop(); + + mCurrentDragPercent = mFromDragPercent - (mFromDragPercent - 1.0f) * interpolatedTime; + if (mListener != null&&!mRefreshing) { + float pos = mFrom + (endTarget - mFrom) * interpolatedTime; + mListener.onDragDistanceChange(pos, + mCurrentDragPercent, (pos - mTarget.getTop()) / mTotalDragDistance); + } + setTargetOffsetTop(offset, false /* requires update */); + } + }; + + private Animation.AnimationListener mToStartListener = new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + + @Override + public void onAnimationEnd(Animation animation) { + mCurrentOffsetTop = mTarget.getTop();//更新mCurrentOffsetTop + } + }; + + private Animation.AnimationListener mReadyToRefreshListener= new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + + } + + @Override + public void onAnimationEnd(Animation animation) { + if (mRefreshing) {//开始刷新 + if (mNotify) { + if (mListener != null) { + mListener.onRefresh(); + } + } + } else {//停止刷新 + animateOffsetToStartPosition(); + } + //更新mCurrentOffsetTop + mCurrentOffsetTop = mTarget.getTop(); +// mTarget.setPadding(mTargetPaddingLeft, mTargetPaddingTop, mTargetPaddingRight, mTotalDragDistance); + } + + @Override + public void onAnimationRepeat(Animation animation) { + + } + }; + public PullToRefreshLayout(Context context) { this(context, null); } @@ -355,31 +424,6 @@ private void animateOffsetToCorrectPosition() { mRefreshView.startAnimation(mAnimateToCorrectPosition); } - private final Animation mAnimateToStartPosition = new Animation() { - @Override - public void applyTransformation(float interpolatedTime, Transformation t) { - moveToStart(interpolatedTime); - } - }; - - private final Animation mAnimateToCorrectPosition = new Animation() { - @Override - public void applyTransformation(float interpolatedTime, Transformation t) { - int targetTop; - int endTarget = mTotalDragDistance; - targetTop = mFrom + (int) ((endTarget - mFrom) * interpolatedTime); - int offset = targetTop - mTarget.getTop(); - - mCurrentDragPercent = mFromDragPercent - (mFromDragPercent - 1.0f) * interpolatedTime; - if (mListener != null&&!mRefreshing) { - float pos = mFrom + (endTarget - mFrom) * interpolatedTime; - mListener.onDragDistanceChange(pos, - mCurrentDragPercent, (pos - mTarget.getTop()) / mTotalDragDistance); - } - setTargetOffsetTop(offset, false /* requires update */); - } - }; - private void moveToStart(float interpolatedTime) { int targetTop = mFrom - (int) (mFrom * interpolatedTime); float targetPercent = mFromDragPercent * (1.0f - interpolatedTime); @@ -435,49 +479,6 @@ public void run() { } } - private final Animation.AnimationListener mToStartListener = new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - } - - @Override - public void onAnimationRepeat(Animation animation) { - } - - @Override - public void onAnimationEnd(Animation animation) { - mCurrentOffsetTop = mTarget.getTop();//更新mCurrentOffsetTop - } - }; - - private final Animation.AnimationListener mReadyToRefreshListener= new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - - } - - @Override - public void onAnimationEnd(Animation animation) { - if (mRefreshing) {//开始刷新 - if (mNotify) { - if (mListener != null) { - mListener.onRefresh(); - } - } - } else {//停止刷新 - animateOffsetToStartPosition(); - } - //更新mCurrentOffsetTop - mCurrentOffsetTop = mTarget.getTop(); -// mTarget.setPadding(mTargetPaddingLeft, mTargetPaddingTop, mTargetPaddingRight, mTotalDragDistance); - } - - @Override - public void onAnimationRepeat(Animation animation) { - - } - }; - /** * 处理多指触控的点击事件 */ diff --git a/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/WaterDropListView/WaterDropListView.java b/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/WaterDropListView/WaterDropListView.java index 73d0c9e..8f8048b 100644 --- a/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/WaterDropListView/WaterDropListView.java +++ b/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/WaterDropListView/WaterDropListView.java @@ -58,19 +58,6 @@ public class WaterDropListView extends ListView implements OnScrollListener,Wate private final static float OFFSET_RADIO = 1.8f; // support iOS like pull private boolean mIsRefreshing; - public boolean isLoadingMore() { - return isLoadingMore(); - } - - public boolean isRefreshing() { - return mIsRefreshing; - } - - private enum ScrollBack{ - header, - footer - } // feature. - /** * @param context */ @@ -89,6 +76,19 @@ public WaterDropListView(Context context, AttributeSet attrs, int defStyle) { initWithContext(context); } + public boolean isLoadingMore() { + return isLoadingMore(); + } + + public boolean isRefreshing() { + return mIsRefreshing; + } + + private enum ScrollBack{ + header, + footer + } // feature. + private void initWithContext(Context context) { mScroller = new Scroller(context, new DecelerateInterpolator()); // XListView need the scroll event, and it will dispatch the event to diff --git a/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/XListView/LoadView.java b/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/XListView/LoadView.java index 7e3cab3..1f9dbae 100644 --- a/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/XListView/LoadView.java +++ b/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/XListView/LoadView.java @@ -24,6 +24,18 @@ public class LoadView extends ImageView { private int height; private Bitmap bitmap; + Handler handler = new Handler() { + @Override + public void handleMessage(Message msg) { + degrees += 30f; + max.setRotate(degrees, width, height); + setImageMatrix(max); + if(degrees==360){ + degrees=0; + } + } + }; + public LoadView(Context context) { super(context); init(); @@ -39,18 +51,6 @@ public LoadView(Context context, AttributeSet attrs, int defStyleAttr) { init(); } - Handler handler = new Handler() { - @Override - public void handleMessage(Message msg) { - degrees += 30f; - max.setRotate(degrees, width, height); - setImageMatrix(max); - if(degrees==360){ - degrees=0; - } - } - }; - private void init() { setScaleType(ScaleType.MATRIX); bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.xlistview_loading); diff --git a/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/XListView/XListView.java b/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/XListView/XListView.java index 339687d..2a1bca5 100644 --- a/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/XListView/XListView.java +++ b/app/src/main/java/com/tellh/android_pulltorefreshlibrary_collection/XListView/XListView.java @@ -43,10 +43,6 @@ public class XListView extends ListView implements OnScrollListener { private int mHeaderViewHeight; // header view's height private boolean mEnablePullRefresh = true; - public boolean isPullRefreshing() { - return mPullRefreshing; - } - private boolean mPullRefreshing = false; // is refreashing. // -- footer view @@ -88,6 +84,10 @@ public XListView(Context context, AttributeSet attrs, int defStyle) { initWithContext(context); } + public boolean isPullRefreshing() { + return mPullRefreshing; + } + private void initWithContext(Context context) { mScroller = new Scroller(context, new DecelerateInterpolator()); // XListView need the scroll event, and it will dispatch the event to diff --git a/circlerefreshlayout/src/main/java/com/tuesda/walker/circlerefresh/AnimationView.java b/circlerefreshlayout/src/main/java/com/tuesda/walker/circlerefresh/AnimationView.java index 69366c2..9b454fc 100644 --- a/circlerefreshlayout/src/main/java/com/tuesda/walker/circlerefresh/AnimationView.java +++ b/circlerefreshlayout/src/main/java/com/tuesda/walker/circlerefresh/AnimationView.java @@ -18,12 +18,44 @@ public class AnimationView extends View { private static final String TAG = "AnimationView"; + private static final long POP_BALL_DUR = 300; + private static long REL_DRAG_DUR = 200; + private static long SPRING_DUR = 200; + private static final long DONE_DUR = 1000; + private static final long OUTER_DUR = 200; private int PULL_HEIGHT; private int PULL_DELTA; private float mWidthOffset; + private int mRadius; + private int mWidth; + private int mHeight; + + private int mRefreshStart = 90; + private int mRefreshStop = 90; + private int TARGET_DEGREE = 270; + private boolean mIsStart = true; + private boolean mIsRefreshing = true; + private int mLastHeight; + + private long mStart; + private long mStop; + private int mSpriDeta; + + private long mSprStart; + private long mSprStop; + + private long mPopStart; + private long mPopStop; + + private long mDoneStart; + private long mDoneStop; + + private long mOutStart; + private long mOutStop; + private OnViewAniDone onViewAniDone; private AnimatorStatus mAniStatus = AnimatorStatus.PULL_DOWN; @@ -111,10 +143,6 @@ private void initView(Context context, AttributeSet attrs, int defStyleAttr) { } - private int mRadius; - private int mWidth; - private int mHeight; - @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int height = MeasureSpec.getSize(heightMeasureSpec); @@ -290,12 +318,6 @@ private void drawOutCir(Canvas canvas) { canvas.drawCircle(mWidth / 2, innerY, mRadius, mBallPaint); } - private int mRefreshStart = 90; - private int mRefreshStop = 90; - private int TARGET_DEGREE = 270; - private boolean mIsStart = true; - private boolean mIsRefreshing = true; - private void drawRefreshing(Canvas canvas) { canvas.drawRect(0, 0, mWidth, mHeight, mBackPaint); int innerY = PULL_HEIGHT - PULL_DELTA / 2 - mRadius * 2; @@ -371,8 +393,6 @@ private void drawDone(Canvas canvas) { } - private int mLastHeight; - private int getRelHeight() { return (int) (mSpriDeta * (1 - getRelRatio())); } @@ -381,13 +401,6 @@ private int getSpringDelta() { return (int) (PULL_DELTA * getSprRatio()); } - - private static long REL_DRAG_DUR = 200; - - private long mStart; - private long mStop; - private int mSpriDeta; - public void releaseDrag() { mStart = System.currentTimeMillis(); mStop = mStart + REL_DRAG_DUR; @@ -405,11 +418,6 @@ private float getRelRatio() { return Math.min(ratio, 1); } - private static long SPRING_DUR = 200; - private long mSprStart; - private long mSprStop; - - private void springUp() { mSprStart = System.currentTimeMillis(); mSprStop = mSprStart + SPRING_DUR; @@ -427,10 +435,6 @@ private float getSprRatio() { return Math.min(1, ratio); } - private static final long POP_BALL_DUR = 300; - private long mPopStart; - private long mPopStop; - private void popBall() { mPopStart = System.currentTimeMillis(); mPopStop = mPopStart + POP_BALL_DUR; @@ -448,10 +452,6 @@ private float getPopRatio() { return Math.min(ratio, 1); } - private static final long OUTER_DUR = 200; - private long mOutStart; - private long mOutStop; - private void startOutCir() { mOutStart = System.currentTimeMillis(); mOutStop = mOutStart + OUTER_DUR; @@ -474,10 +474,6 @@ private float getOutRatio() { return Math.min(ratio, 1); } - private static final long DONE_DUR = 1000; - private long mDoneStart; - private long mDoneStop; - private void applyDone() { mDoneStart = System.currentTimeMillis(); mDoneStop = mDoneStart + DONE_DUR; @@ -497,9 +493,6 @@ private float getDoneRatio() { return Math.min(ratio, 1); } - - private OnViewAniDone onViewAniDone; - public void setOnViewAniDone(OnViewAniDone onViewAniDone) { this.onViewAniDone = onViewAniDone; } diff --git a/circlerefreshlayout/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java b/circlerefreshlayout/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java index 862af6a..b20fa71 100644 --- a/circlerefreshlayout/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java +++ b/circlerefreshlayout/src/main/java/com/tuesda/walker/circlerefresh/CircleRefreshLayout.java @@ -65,6 +65,8 @@ public class CircleRefreshLayout extends FrameLayout { private final DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator(10); + private OnCircleRefreshListener onCircleRefreshListener; + public CircleRefreshLayout(Context context) { this(context, null, 0); } @@ -298,8 +300,6 @@ public void finishRefreshing() { mHeader.setRefreshing(false); } - private OnCircleRefreshListener onCircleRefreshListener; - public void setOnRefreshListener(OnCircleRefreshListener onCircleRefreshListener) { this.onCircleRefreshListener = onCircleRefreshListener; } diff --git a/swipetorefreshlayoutgoogle/src/main/java/com/tellh/swipetorefreshlayoutgoogle/MaterialProgressDrawable.java b/swipetorefreshlayoutgoogle/src/main/java/com/tellh/swipetorefreshlayoutgoogle/MaterialProgressDrawable.java index 572d89a..3635600 100644 --- a/swipetorefreshlayoutgoogle/src/main/java/com/tellh/swipetorefreshlayoutgoogle/MaterialProgressDrawable.java +++ b/swipetorefreshlayoutgoogle/src/main/java/com/tellh/swipetorefreshlayoutgoogle/MaterialProgressDrawable.java @@ -567,8 +567,8 @@ private void drawTriangle(Canvas c, float startAngle, float sweepAngle, Rect bou // been fixed as of API 21. mArrow.moveTo(0, 0); mArrow.lineTo(mArrowWidth * mArrowScale, 0); - mArrow.lineTo(mArrowWidth * mArrowScale / 2), (mArrowHeight - * mArrowScale); + mArrow.lineTo((mArrowWidth * mArrowScale / 2), (mArrowHeight + * mArrowScale)); mArrow.offset(x - inset, y); mArrow.close(); // draw a triangle diff --git a/swipetorefreshlayoutgoogle/src/main/java/com/tellh/swipetorefreshlayoutgoogle/SwipeRefreshTestLayout.java b/swipetorefreshlayoutgoogle/src/main/java/com/tellh/swipetorefreshlayoutgoogle/SwipeRefreshTestLayout.java index 8057657..f00727c 100644 --- a/swipetorefreshlayoutgoogle/src/main/java/com/tellh/swipetorefreshlayoutgoogle/SwipeRefreshTestLayout.java +++ b/swipetorefreshlayoutgoogle/src/main/java/com/tellh/swipetorefreshlayoutgoogle/SwipeRefreshTestLayout.java @@ -244,6 +244,75 @@ public void onAnimationEnd(Animation animation) { } }; + private final Animation mAnimateToCorrectPosition = new Animation() { + @Override + public void applyTransformation(float interpolatedTime, Transformation t) { + int targetTop = 0; + int endTarget = 0; + if (!mUsingCustomStart) { + endTarget = (int) (mSpinnerFinalOffset - Math.abs(mOriginalOffsetTop)); + } else { + endTarget = (int) mSpinnerFinalOffset; + } + targetTop = mFrom + (int) ((endTarget - mFrom) * interpolatedTime); + int offset = targetTop - mCircleView.getTop(); + setTargetOffsetTopAndBottom(offset, false /* requires update */); + mProgress.setArrowScale(1 - interpolatedTime); + } + }; + + private final Animation mAnimateToStartPosition = new Animation() { + @Override + public void applyTransformation(float interpolatedTime, Transformation t) { + moveToStart(interpolatedTime); + } + }; + + /** + * Simple constructor to use when creating a SwipeRefreshLayout from code. + * + * @param context + */ + public SwipeRefreshTestLayout(Context context) { + this(context, null); + } + + /** + * Constructor that is called when inflating SwipeRefreshLayout from XML. + * + * @param context + * @param attrs + */ + public SwipeRefreshTestLayout(Context context, AttributeSet attrs) { + super(context, attrs); + + mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); + + mMediumAnimationDuration = getResources().getInteger( + android.R.integer.config_mediumAnimTime); + + setWillNotDraw(false); + mDecelerateInterpolator = new DecelerateInterpolator(DECELERATE_INTERPOLATION_FACTOR); + + final TypedArray a = context.obtainStyledAttributes(attrs, LAYOUT_ATTRS); + setEnabled(a.getBoolean(0, true)); + a.recycle(); + + final DisplayMetrics metrics = getResources().getDisplayMetrics(); + mCircleWidth = (int) (CIRCLE_DIAMETER * metrics.density); + mCircleHeight = (int) (CIRCLE_DIAMETER * metrics.density); + + createProgressView(); + ViewCompat.setChildrenDrawingOrderEnabled(this, true); + // the absolute offset has to take into account that the circle starts at an offset + mSpinnerFinalOffset = DEFAULT_CIRCLE_TARGET * metrics.density; + mTotalDragDistance = mSpinnerFinalOffset; + mNestedScrollingParentHelper = new NestedScrollingParentHelper(this); + + mNestedScrollingChildHelper = new NestedScrollingChildHelper(this); + setNestedScrollingEnabled(true); + } + private void setColorViewAlpha(int targetAlpha) { mCircleView.getBackground().setAlpha(targetAlpha); mProgress.setAlpha(targetAlpha); @@ -311,51 +380,6 @@ public void setSize(int size) { mCircleView.setImageDrawable(mProgress); } - /** - * Simple constructor to use when creating a SwipeRefreshLayout from code. - * - * @param context - */ - public SwipeRefreshTestLayout(Context context) { - this(context, null); - } - - /** - * Constructor that is called when inflating SwipeRefreshLayout from XML. - * - * @param context - * @param attrs - */ - public SwipeRefreshTestLayout(Context context, AttributeSet attrs) { - super(context, attrs); - - mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); - - mMediumAnimationDuration = getResources().getInteger( - android.R.integer.config_mediumAnimTime); - - setWillNotDraw(false); - mDecelerateInterpolator = new DecelerateInterpolator(DECELERATE_INTERPOLATION_FACTOR); - - final TypedArray a = context.obtainStyledAttributes(attrs, LAYOUT_ATTRS); - setEnabled(a.getBoolean(0, true)); - a.recycle(); - - final DisplayMetrics metrics = getResources().getDisplayMetrics(); - mCircleWidth = (int) (CIRCLE_DIAMETER * metrics.density); - mCircleHeight = (int) (CIRCLE_DIAMETER * metrics.density); - - createProgressView(); - ViewCompat.setChildrenDrawingOrderEnabled(this, true); - // the absolute offset has to take into account that the circle starts at an offset - mSpinnerFinalOffset = DEFAULT_CIRCLE_TARGET * metrics.density; - mTotalDragDistance = mSpinnerFinalOffset; - mNestedScrollingParentHelper = new NestedScrollingParentHelper(this); - - mNestedScrollingChildHelper = new NestedScrollingChildHelper(this); - setNestedScrollingEnabled(true); - } - protected int getChildDrawingOrder(int childCount, int i) { if (mCircleViewIndex < 0) { return i; @@ -1031,23 +1055,6 @@ private void animateOffsetToStartPosition(int from, AnimationListener listener) } } - private final Animation mAnimateToCorrectPosition = new Animation() { - @Override - public void applyTransformation(float interpolatedTime, Transformation t) { - int targetTop = 0; - int endTarget = 0; - if (!mUsingCustomStart) { - endTarget = (int) (mSpinnerFinalOffset - Math.abs(mOriginalOffsetTop)); - } else { - endTarget = (int) mSpinnerFinalOffset; - } - targetTop = mFrom + (int) ((endTarget - mFrom) * interpolatedTime); - int offset = targetTop - mCircleView.getTop(); - setTargetOffsetTopAndBottom(offset, false /* requires update */); - mProgress.setArrowScale(1 - interpolatedTime); - } - }; - private void moveToStart(float interpolatedTime) { int targetTop = 0; targetTop = mFrom + (int) ((mOriginalOffsetTop - mFrom) * interpolatedTime); @@ -1055,13 +1062,6 @@ private void moveToStart(float interpolatedTime) { setTargetOffsetTopAndBottom(offset, false /* requires update */); } - private final Animation mAnimateToStartPosition = new Animation() { - @Override - public void applyTransformation(float interpolatedTime, Transformation t) { - moveToStart(interpolatedTime); - } - }; - private void startScaleDownReturnToStartAnimation(int from, AnimationListener listener) { mFrom = from; diff --git a/taurus_flyplane/src/main/java/com/yalantis/taurus/PullToRefreshView.java b/taurus_flyplane/src/main/java/com/yalantis/taurus/PullToRefreshView.java index 17b6c4c..6bf105a 100644 --- a/taurus_flyplane/src/main/java/com/yalantis/taurus/PullToRefreshView.java +++ b/taurus_flyplane/src/main/java/com/yalantis/taurus/PullToRefreshView.java @@ -36,10 +36,6 @@ public class PullToRefreshView extends ViewGroup { private float mCurrentDragPercent; private int mCurrentOffsetTop; - public boolean isRefreshing() { - return mRefreshing; - } - private boolean mRefreshing; private int mActivePointerId; private boolean mIsBeingDragged; @@ -49,6 +45,52 @@ public boolean isRefreshing() { private boolean mNotify; private OnRefreshListener mListener; + private final Animation mAnimateToStartPosition = new Animation() { + @Override + public void applyTransformation(float interpolatedTime, @NonNull Transformation t) { + moveToStart(interpolatedTime); + } + }; + + private Animation mAnimateToEndPosition = new Animation() { + @Override + public void applyTransformation(float interpolatedTime, @NonNull Transformation t) { + moveToEnd(interpolatedTime); + } + }; + + private final Animation mAnimateToCorrectPosition = new Animation() { + @Override + public void applyTransformation(float interpolatedTime, @NonNull Transformation t) { + int targetTop; + int endTarget = mTotalDragDistance; + targetTop = mFrom + (int) ((endTarget - mFrom) * interpolatedTime); + int offset = targetTop - mTarget.getTop(); + + mCurrentDragPercent = mFromDragPercent - (mFromDragPercent - 1.0f) * interpolatedTime; + mRefreshView.setPercent(mCurrentDragPercent); + + setTargetOffsetTop(offset, false /* requires update */); + } + + }; + + private Animation.AnimationListener mToStartListener = new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + + @Override + public void onAnimationEnd(Animation animation) { + mRefreshView.stop(); + mCurrentOffsetTop = mTarget.getTop(); + } + }; + public PullToRefreshView(Context context) { this(context, null); } @@ -70,6 +112,10 @@ public PullToRefreshView(Context context, AttributeSet attrs) { ViewCompat.setChildrenDrawingOrderEnabled(this, true); } + public boolean isRefreshing() { + return mRefreshing; + } + public int getTotalDragDistance() { return mTotalDragDistance; } @@ -250,36 +296,6 @@ private void animateOffsetToCorrectPosition() { mCurrentOffsetTop = mTarget.getTop(); } - private final Animation mAnimateToStartPosition = new Animation() { - @Override - public void applyTransformation(float interpolatedTime, @NonNull Transformation t) { - moveToStart(interpolatedTime); - } - }; - - private Animation mAnimateToEndPosition = new Animation() { - @Override - public void applyTransformation(float interpolatedTime, @NonNull Transformation t) { - moveToEnd(interpolatedTime); - } - }; - - private final Animation mAnimateToCorrectPosition = new Animation() { - @Override - public void applyTransformation(float interpolatedTime, @NonNull Transformation t) { - int targetTop; - int endTarget = mTotalDragDistance; - targetTop = mFrom + (int) ((endTarget - mFrom) * interpolatedTime); - int offset = targetTop - mTarget.getTop(); - - mCurrentDragPercent = mFromDragPercent - (mFromDragPercent - 1.0f) * interpolatedTime; - mRefreshView.setPercent(mCurrentDragPercent); - - setTargetOffsetTop(offset, false /* requires update */); - } - - }; - private void moveToStart(float interpolatedTime) { int targetTop = mFrom - (int) (mFrom * interpolatedTime); float targetPercent = mFromDragPercent * (1.0f - interpolatedTime); @@ -321,22 +337,6 @@ private void setRefreshing(boolean refreshing, final boolean notify) { } } - private Animation.AnimationListener mToStartListener = new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - } - - @Override - public void onAnimationRepeat(Animation animation) { - } - - @Override - public void onAnimationEnd(Animation animation) { - mRefreshView.stop(); - mCurrentOffsetTop = mTarget.getTop(); - } - }; - private void onSecondaryPointerUp(MotionEvent ev) { final int pointerIndex = MotionEventCompat.getActionIndex(ev); final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);