You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by mi...@apache.org on 2017/08/16 03:49:17 UTC
[09/13] incubator-weex git commit: * [android] using independent
Handler to handle auto scroll
* [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/a62383e6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/a62383e6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/a62383e6
Branch: refs/heads/0.16-dev
Commit: a62383e6f49af57d60fbcbd9ecbe1b17724b02f5
Parents: fe0b41e
Author: misakuo <mi...@apache.org>
Authored: Tue Aug 15 16:12:04 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Tue Aug 15 16:12:04 2017 +0800
----------------------------------------------------------------------
.../taobao/weex/ui/view/WXCircleViewPager.java | 36 ++++++++++++++------
1 file changed, 25 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a62383e6/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 93cac73..7e8e091 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
@@ -22,6 +22,7 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
+import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
@@ -41,6 +42,7 @@ import java.lang.reflect.Field;
@SuppressLint("HandlerLeak")
public class WXCircleViewPager extends ViewPager implements WXGestureObservable {
+ private final int SCROLL_TO_NEXT = 1;
private WXGesture wxGesture;
private boolean isAutoScroll;
private long intervalTime = 3 * 1000;
@@ -48,7 +50,17 @@ 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()) {
+ @Override
+ public void handleMessage(Message msg) {
+ if (msg.what == SCROLL_TO_NEXT) {
+ showNextItem();
+ this.sendEmptyMessageDelayed(SCROLL_TO_NEXT, intervalTime);
+ return;
+ }
+ super.handleMessage(msg);
+ }
+ };
private Runnable scrollAction = new ScrollAction(this);
@@ -59,7 +71,6 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable
}
private void init() {
- mAutoScrollHandler = new Handler(Looper.getMainLooper());
setOverScrollMode(View.OVER_SCROLL_NEVER);
addOnPageChangeListener(new OnPageChangeListener() {
@@ -153,12 +164,14 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable
*/
public void startAutoScroll() {
isAutoScroll = true;
- mAutoScrollHandler.removeCallbacks(scrollAction);
- mAutoScrollHandler.postDelayed(scrollAction, intervalTime);
+ mAutoScrollHandler.removeCallbacksAndMessages(null);
+ mAutoScrollHandler.sendEmptyMessageDelayed(SCROLL_TO_NEXT, intervalTime);
+// mAutoScrollHandler.removeCallbacksAndMessages(scrollAction);
+// mAutoScrollHandler.postDelayed(scrollAction, intervalTime);
}
public void pauseAutoScroll(){
- mAutoScrollHandler.removeCallbacks(scrollAction);
+ mAutoScrollHandler.removeCallbacksAndMessages(null);
}
/**
@@ -166,7 +179,7 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable
*/
public void stopAutoScroll() {
isAutoScroll = false;
- mAutoScrollHandler.removeCallbacks(scrollAction);
+ mAutoScrollHandler.removeCallbacksAndMessages(null);
}
public boolean isAutoScroll() {
@@ -219,12 +232,13 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
- mAutoScrollHandler.removeCallbacks(scrollAction);
+ mAutoScrollHandler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
if (isAutoScroll()) {
- mAutoScrollHandler.postDelayed(scrollAction, intervalTime);
+ mAutoScrollHandler.sendEmptyMessageDelayed(SCROLL_TO_NEXT, intervalTime);
+ //postDelayed(scrollAction, intervalTime);
}
break;
}
@@ -300,7 +314,7 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
- mAutoScrollHandler.removeCallbacks(scrollAction);
+ mAutoScrollHandler.removeCallbacksAndMessages(null);
}
private static final class ScrollAction implements Runnable {
@@ -315,8 +329,8 @@ public class WXCircleViewPager extends ViewPager implements WXGestureObservable
WXCircleViewPager target;
if ((target = targetRef.get()) != null) {
target.showNextItem();
- target.mAutoScrollHandler.removeCallbacks(this);
- target.mAutoScrollHandler.postDelayed(this, target.getIntervalTime());
+ target.removeCallbacks(this);
+ target.postDelayed(this, target.getIntervalTime());
}
}
}