快乐由此去
时间:2017-11-07 10:48:10来源:杰瑞文章网点击:作文字数:200字
作文导读:ViewPager是一个很常见的组件,不仅支持收拾滑动切换页面,我们还可以通过viewPager.setCurrentItem(index)来切换到指定的页面,那么他们如何区分呢?
我们知道ViewPager可以添加ViewPager.OnPageChangeListener监听器,可以监听切换的状态。通过观察ViewPager.OnPageChangeListener#onPageScrollStateChanged(int state)方法中state的输出,发现了手势切换和自动切换的规律,具体规律如下:
手势滑动翻页的log:
OnPageChangeListener onPageScrollStateChanged state:1
OnPageChangeListener onPageScrollStateChanged state:2
OnPageChangeListener onPageSelected position:1
OnPageChangeListener onPageScrollStateChanged state:0
代码翻页的log:
OnPageChangeListener onPageScrollStateChanged state:2
OnPageChangeListener onPageSelected position:9
OnPageChangeListener onPageScrollStateChanged state:0
根据log可以得出如下结论:
手势滑动翻页,是1、2、0(ViewPager.SCROLL_STATE_DRAGGING、ViewPager.SCROLL_STATE_SETTLING、ViewPager.SCROLL_STATE_IDLE)
代码翻页,是2、0(ViewPager.SCROLL_STATE_SETTLING、ViewPager.SCROLL_STATE_IDLE)
根据这个规律,我们可以写出以下代码:我们在onPageScrollStateChanged判断是否是手动的状态,并且可以在onPageSelected方法中使用这个状态。
/**
* 是否是用户手动切换ViewPager
*/
private boolean manualDraging = false;
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
LogUtils.e(TAG, "OnPageChangeListener onPageScrolled:" + position);
}
@Override
public void onPageSelected(int position) {
// 如果是手动模式,就暂停播放,同时清除掉各种状态;
if (manualDraging) {
LogUtils.e(TAG, "手动切换");
} else {
LogUtils.e(TAG, "代码切换");
}
}
@Override
/**
* 代码翻页,是2、0(ViewPager.SCROLL_STATE_SETTLING、ViewPager.SCROLL_STATE_IDLE)
* 手动滑动翻页,是1、2、0(ViewPager.SCROLL_STATE_DRAGGING、ViewPager.SCROLL_STATE_SETTLING、ViewPager.SCROLL_STATE_IDLE)
* {@link ViewPager.SCROLL_STATE_IDLE}
* {@link ViewPager.SCROLL_STATE_DRAGGING}
* {@link ViewPager.SCROLL_STATE_SETTLING}
*/
public void onPageScrollStateChanged(int state) {
LogUtils.e(TAG, "OnPageChangeListener onPageScrollStateChanged state:" + state);
switch (state) {
case ViewPager.SCROLL_STATE_IDLE:
manualDraging = false;
break;
case ViewPager.SCROLL_STATE_DRAGGING:
manualDraging = true;
break;
case ViewPager.SCROLL_STATE_SETTLING:
break;
default:
break;
}
}
});
ViewPager是一个很常见的组件,不仅支持收拾滑动切换页面,我们还可以通过viewPager.setCurrentItem(index)来切换到指定的页面,那么他们如何区分呢?
我们知道ViewPager可以添加ViewPager.OnPageChangeListener监听器,可以监听切换的状态。通过观察ViewPager.OnPageChangeListener#onPageScrollStateChanged(int state)方法中state的输出,发现了手势切换和自动切换的规律,具体规律如下:
手势滑动翻页的log:
OnPageChangeListener onPageScrollStateChanged state:1
OnPageChangeListener onPageScrollStateChanged state:2
OnPageChangeListener onPageSelected position:1
OnPageChangeListener onPageScrollStateChanged state:0
代码翻页的log:
OnPageChangeListener onPageScrollStateChanged state:2
OnPageChangeListener onPageSelected position:9
OnPageChangeListener onPageScrollStateChanged state:0
根据log可以得出如下结论:
手势滑动翻页,是1、2、0(ViewPager.SCROLL_STATE_DRAGGING、ViewPager.SCROLL_STATE_SETTLING、ViewPager.SCROLL_STATE_IDLE)
代码翻页,是2、0(ViewPager.SCROLL_STATE_SETTLING、ViewPager.SCROLL_STATE_IDLE)
根据这个规律,我们可以写出以下代码:我们在onPageScrollStateChanged判断是否是手动的状态,并且可以在onPageSelected方法中使用这个状态。
/**
* 是否是用户手动切换ViewPager
*/
private boolean manualDraging = false;
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
LogUtils.e(TAG, "OnPageChangeListener onPageScrolled:" + position);
}
@Override
public void onPageSelected(int position) {
// 如果是手动模式,就暂停播放,同时清除掉各种状态;
if (manualDraging) {
LogUtils.e(TAG, "手动切换");
} else {
LogUtils.e(TAG, "代码切换");
}
}
@Override
/**
* 代码翻页,是2、0(ViewPager.SCROLL_STATE_SETTLING、ViewPager.SCROLL_STATE_IDLE)
* 手动滑动翻页,是1、2、0(ViewPager.SCROLL_STATE_DRAGGING、ViewPager.SCROLL_STATE_SETTLING、ViewPager.SCROLL_STATE_IDLE)
* {@link ViewPager.SCROLL_STATE_IDLE}
* {@link ViewPager.SCROLL_STATE_DRAGGING}
* {@link ViewPager.SCROLL_STATE_SETTLING}
*/
public void onPageScrollStateChanged(int state) {
LogUtils.e(TAG, "OnPageChangeListener onPageScrollStateChanged state:" + state);
switch (state) {
case ViewPager.SCROLL_STATE_IDLE:
manualDraging = false;
break;
case ViewPager.SCROLL_STATE_DRAGGING:
manualDraging = true;
break;
case ViewPager.SCROLL_STATE_SETTLING:
break;
default:
break;
}
}
});

快乐由此去一文由杰瑞文章网免费提供,本站为公益性作文网站,此作文为网上收集或网友提供,版权归原作者所有,如果侵犯了您的权益,请及时与我们联系,我们会立即删除!
杰瑞文章网友情提示:请不要直接抄作文用来交作业。你可以学习、借鉴、期待你写出更好的作文。
说说你对这篇作文的看法吧