package net.coding.program.subject.loop; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; /** * Created by david on 15/4/20. */ public class AutoScrollLoopViewPager extends LoopViewPager { public AutoScrollLoopViewPager(Context context) { super(context); } public AutoScrollLoopViewPager(Context context, AttributeSet attrs) { super(context, attrs); } private static final int INTERVAL = 5000; private boolean isPagingEnabled = true; @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); removeCallbacks(mAutoScrollAction); } private void sendScrollMessage() { postDelayed(mAutoScrollAction, INTERVAL); } private Runnable mAutoScrollAction = new Runnable() { @Override public void run() { sendScrollMessage(); goForwardSmoothly(); } }; @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: { removeCallbacks(mAutoScrollAction); break; } case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: { sendScrollMessage(); break; } } return super.dispatchTouchEvent(ev); } public void startAutoScroll() { sendScrollMessage(); } @Override public boolean onTouchEvent(MotionEvent event) { return this.isPagingEnabled && super.onTouchEvent(event); } @Override public boolean onInterceptTouchEvent(MotionEvent event) { return this.isPagingEnabled && super.onInterceptTouchEvent(event); } public void setPagingEnabled(boolean b) { this.isPagingEnabled = b; } }