移动端疑难杂症

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

上一篇下一篇

猜你喜欢

热点阅读