首页 > 学院 > 开发设计 > 正文

监听ViewPager滑动到最后一页时,再次拖动的方法监听

2019-11-09 13:45:49
字体:
来源:转载
供稿:网友

当ViewPager滑动到最后一页时当用户再次拖动时,开发者可能会监听此状态去做一些跳转逻辑,比如加载新页面或者触发其他事件等等,今天我就简单实现该案例,其实逻辑很简单,主要是给ViewPager添加监听方法,然后在OnPageChangeListener中去判断当前ViewPager的状态,然后去做一些跳转逻辑,我把完整的java代码贴给大家参考,由于代码里面注释比较详细,我就不在此用过多的文字赘述了。

功能代码:

package com.zhuandian.msuic.viewpager;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.util.Log;import com.zhuandian.msuic.R;import java.util.ArrayList;import java.util.List;/** * Created by 谢栋 on 2017/2/2. */public class ViewPagerTest_2 extends AppCompatActivity{    PRivate ViewPager viewpager;    private TabLayout tablayout;    private List<Fragment> fragmentList = new ArrayList<>();    private boolean isLastPage = false;    private boolean isDragPage = false;    private boolean canJumpPage = true;    private  int[] mImgIds = new int[]            {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.viewpager_layout_2);        initView();        viewpager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(),fragmentList));        tablayout.setupWithViewPager(viewpager);   //同步Tablayout与ViewPager//        **********************************************************************************************************        //监听ViewPager的跳转状态,当跳转到最后一页时,执行jumpToNext()方法        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            /**             * 在屏幕滚动过程中不断被调用             * @param position             * @param positionOffset   是当前页面滑动比例,如果页面向右翻动,这个值不断变大,最后在趋近1的情况后突变为0。如果页面向左翻动,这个值不断变小,最后变为0             * @param positionOffsetPixels   是当前页面滑动像素,变化情况和positionOffset一致             */            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                Log.v("AAA",isLastPage+"   "+isDragPage+"   "+positionOffsetPixels);                if (isLastPage && isDragPage && positionOffsetPixels == 0){   //当前页是最后一页,并且是拖动状态,并且像素偏移量为0                    if (canJumpPage){                        canJumpPage = false;                        JumpToNext();                    }                }            }            /**             * 这个方法有一个参数position,代表哪个页面被选中             * @param position    当前页的索引             */            @Override            public void onPageSelected(int position) {                isLastPage = position == mImgIds.length-1;            }            /**             * 在手指操作屏幕的时候发生变化             * @param state   有三个值:0(END),1(PRESS) , 2(UP) 。             */            @Override            public void onPageScrollStateChanged(int state) {                isDragPage = state == 1;            }        });    }    /**     * viewpager滑动到最后一页做跳转逻辑     */    private void JumpToNext() {        Log.v("DDD","函数被触发-------");    }    /**     * 初始化布局     */    private void initView() {        viewpager = (ViewPager) findViewById(R.id.viewpager);        tablayout = (TabLayout) findViewById(R.id.tablayout);        //添加Fragment        fragmentList.add(new ViewPagerFragment_1());        fragmentList.add(new ViewPagerFragment_2());        fragmentList.add(new ViewPagerFragment_3());    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表