package io.hefuyi.zhihudaily.widget; import android.content.Context; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import io.hefuyi.zhihudaily.util.L; /** * Created by hefuyi on 16/8/4. */ public class MyViewPager extends ViewPager { private static final String TAG = MyViewPager.class.getSimpleName(); private static final int WHAT_SCROLL = 0; private final long mDelayTime = 5000; private boolean mIsAutoScroll; public MyViewPager(Context context) { super(context, null); } public MyViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public void startAutoScroll() { mIsAutoScroll = true; sendScrollMessage(mDelayTime); } public void stopAutoScroll(){ mIsAutoScroll = false; handler.removeMessages(WHAT_SCROLL); } public boolean isAutoScrolling(){ return mIsAutoScroll; } private final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == WHAT_SCROLL) { scrollOnce(); sendScrollMessage(mDelayTime); } } }; private void scrollOnce() { PagerAdapter adapter = getAdapter(); int currentItem = getCurrentItem(); int count; if (adapter == null || (count = adapter.getCount()) < 1) { stopAutoScroll(); return; } if (currentItem < count) { currentItem++; } if (currentItem == count) { currentItem = 0; } L.i(TAG, "currentItem : " + currentItem); setCurrentItem(currentItem); } private void sendScrollMessage(long delayTimeMills) { if (mIsAutoScroll) { handler.removeMessages(WHAT_SCROLL); handler.sendEmptyMessageDelayed(WHAT_SCROLL, delayTimeMills); } } }