国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

監聽ViewPager滑動到最后一頁時,再次拖動的方法監聽

2019-11-09 14:24:42
字體:
來源:轉載
供稿:網友

當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());    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇东市| 仁寿县| 兴山县| 郑州市| 永安市| 正阳县| 甘谷县| 伊川县| 宽甸| 林西县| 于都县| 舟曲县| 江安县| 宝鸡市| 五峰| 马鞍山市| 乾安县| 香港| 安徽省| 馆陶县| 苍梧县| 凤阳县| 同心县| 张家港市| 泰顺县| 武平县| 连南| 丰原市| 平定县| 淄博市| 合山市| 揭阳市| 大渡口区| 紫金县| 濮阳县| 临漳县| 海伦市| 临邑县| 报价| 图木舒克市| 兰考县|