ViewPager的addOnPageChangeListene
2019-01-13 本文已影响0人
陈兴强
前言:
“虚拟货币可具有长期承诺,尤其当这项创新技术推动更高速、安全和有效的支付系统。” ——美联储主席, Ben Bernanke
一 简介
Android api是这么写的:
Add a listener that will be invoked whenever the page changes or is incrementally scrolled
(添加一个侦听器,该侦听器将在页面更改或增量滚动时被调用)
我们可以这么理解:ViewPager+Fragment可以实现页面切换,那么怎么才能监听它呢?这个时候就要用到addOnPageChangeListener。
二 简单使用
vpWallet.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float v, int i1) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int position) {
}
});
vpWallet:一个ViewPager控件
三 拆解
这是一个一对一的观察者模式
由addOnPageChangeListener与OnPageChangeListener组成
1. addOnPageChangeListener
public void addOnPageChangeListener(@NonNull ViewPager.OnPageChangeListener listener) {
if (this.mOnPageChangeListeners == null) {
this.mOnPageChangeListeners = new ArrayList();
}
this.mOnPageChangeListeners.add(listener);
}
代码很简单
第一步判断listener是否为空
第二步把listener放进数组
怎么调用?下一节再讲
2. OnPageChangeListener
OnPageChangeListener是一个接口实现三个方法:
public interface OnPageChangeListener {
void onPageScrolled(int var1, float var2, @Px int var3);
void onPageSelected(int var1);
void onPageScrollStateChanged(int var1);
}
实现了三个方法
onPageScrolled(int var1, float var2, @Px int var3):
滑动页面时调用,有三个参数 var1当前页面、var2偏移比例、var3滑动像素
onPageSelected(int var1):
进入一个新的页面调用这个方法,var1当前位于哪个页面。
onPageScrollStateChanged(int var1):
滑动状态更改时调用
var1:有三个状态,1按下时调用,抬起时如果发生了滑动值会变为2(不发生滑动不会有2),滑动结束时变为0