如何只实现addOnPageChangeListener的一个或两个方法

前言

我们知道,监听ViewPager滑动,需要通过addOnPageChangeListener来监听,addOnPageChangeListener需要实现以下3个方法:

/**
     * Callback interface for responding to changing state of the selected page.
     */
    public interface OnPageChangeListener {

        /**
         * This method will be invoked when the current page is scrolled, either as part
         * of a programmatically initiated smooth scroll or a user initiated touch scroll.
         *
         * @param position Position index of the first page currently being displayed.
         *                 Page position+1 will be visible if positionOffset is nonzero.
         * @param positionOffset Value from [0, 1) indicating the offset from the page at position.
         * @param positionOffsetPixels Value in pixels indicating the offset from position.
         */
        void onPageScrolled(int position, float positionOffset, int positionOffsetPixels);

        /**
         * This method will be invoked when a new page becomes selected. Animation is not
         * necessarily complete.
         *
         * @param position Position index of the new selected page.
         */
        void onPageSelected(int position);

        /**
         * Called when the scroll state changes. Useful for discovering when the user
         * begins dragging, when the pager is automatically settling to the current page,
         * or when it is fully stopped/idle.
         *
         * @param state The new scroll state.
         * @see ViewPager#SCROLL_STATE_IDLE
         * @see ViewPager#SCROLL_STATE_DRAGGING
         * @see ViewPager#SCROLL_STATE_SETTLING
         */
        void onPageScrollStateChanged(int state);
    }

在实现开发中,很多时候我们并不需要都实现,为了减少代码量,那怎么才能只实现其中一个方法或者实现其中两个方法呢?

方式

通过源码,我们可以找到以下代码:

/**
     * Simple implementation of the {@link OnPageChangeListener} interface with stub
     * implementations of each method. Extend this if you do not intend to override
     * every method of {@link OnPageChangeListener}.
     */
    public static class SimpleOnPageChangeListener implements OnPageChangeListener {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            // This space for rent
        }

        @Override
        public void onPageSelected(int position) {
            // This space for rent
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            // This space for rent
        }
    }

如同注释所说,当你不需要实现所有方法时,就是用SimpleOnPageChangeListener,在代码中只需要这样调用即可:

viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
               
            }
        });

虽然文章很短,但如果文章对你有帮助或者心头有了“又学到了”的感慨,希望点个喜欢支持一下,谢谢。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,246评论 25 708
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,347评论 3 119
  • 昨天发现一个非常奇怪的问题,就是安卓内外网都可以访问,而iOS内网可以访问,外网无法访问。 后来发现对比发现...
    冷月秋痕阅读 197评论 0 0
  • 蓝海每期开营的第一天都会要求我们做一个自我介绍,因为21天的时间,我们需要彼此了解,彼此鼓励,彼此加油,彼此前进。...
    小馒头0601阅读 288评论 1 3

友情链接更多精彩内容