* [android] using independent Handler to handle auto scroll
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/be89af83 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/be89af83 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/be89af83 Branch: refs/heads/0.16-dev Commit: be89af838d49cb730527de9b1fb717c9885da50c Parents: 9987070 Author: misakuo <misa...@apache.org> Authored: Tue Aug 15 15:09:47 2017 +0800 Committer: misakuo <misa...@apache.org> Committed: Tue Aug 15 15:09:47 2017 +0800 ---------------------------------------------------------------------- .../com/taobao/weex/ui/view/WXCircleViewPager.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/be89af83/android/sdk/src/main/java/com/taobao/weex/ui/view/WXCircleViewPager.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXCircleViewPager.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXCircleViewPager.java index f01702e..6419e48 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXCircleViewPager.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXCircleViewPager.java @@ -48,7 +48,7 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable private boolean needLoop = true; private boolean scrollable = true; private int mState = ViewPager.SCROLL_STATE_IDLE; - private Handler mAutoScrollHandler; + private Handler mAutoScrollHandler = new Handler(Looper.getMainLooper()); private Runnable scrollAction = new ScrollAction(this); @@ -59,8 +59,6 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable } private void init() { - mAutoScrollHandler = new Handler(Looper.getMainLooper()); - setOverScrollMode(View.OVER_SCROLL_NEVER); addOnPageChangeListener(new OnPageChangeListener() { @@ -220,12 +218,12 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_MOVE: - removeCallbacks(scrollAction); + mAutoScrollHandler.removeCallbacks(scrollAction); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: if (isAutoScroll()) { - postDelayed(scrollAction, intervalTime); + mAutoScrollHandler.postDelayed(scrollAction, intervalTime); } break; } @@ -301,7 +299,7 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); - removeCallbacks(scrollAction); + mAutoScrollHandler.removeCallbacks(scrollAction); } private static final class ScrollAction implements Runnable { @@ -316,8 +314,8 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable WXCircleViewPager target; if ((target = targetRef.get()) != null) { target.showNextItem(); - target.removeCallbacks(this); - target.postDelayed(this, target.getIntervalTime()); + target.mAutoScrollHandler.removeCallbacks(this); + target.mAutoScrollHandler.postDelayed(this, target.getIntervalTime()); } } }