如何在捕获用户滚动viewpager滚动条的事件

2014-12-11 13:52:19     人阅读    

如何在捕获用户滚动viewpager滚动条的事件


我现在想监听 ViewPagerIndicator 的滚动条,当滚动条被滚动到最后部分的时候弹出一个新的 activity

The code below launches activity once the last fragment is visible.
下面的代码是在最后的fragment 片段可见时启动一个activity ,大家有没有其他建议?

CirclePageIndicator titleIndicator = (CirclePageIndicator)findViewById(R.id.titles);
    titleIndicator.setViewPager(pager);
    titleIndicator.(new );
    titleIndicator.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
                selectedIndex = position;

        }

        @Override
        public void onPageScrolled(int position, float arg1, int arg2) {


        }

        @Override
        public void onPageScrollStateChanged(int scroll) {
            if(selectedIndex == adapter.getCount()-1)
            {
               launchactivity)(;
            }


        }


    });


 

处理方法

当手指在滚动条上面的时候,我们关注的只是 0  和 mPager.getAdapter().getCount() - 1  ,
当滚动条的状态 ViewPager.SCROLL_STATE_DRAGGING  变动意味着用户始终在屏幕上推动视图,下面的条件需要联系的观察0 和 positionOffset  来决定是否进入了滚动模式.

titleIndicator.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                private int mScrollState = -1;
                private float mPreviousPageOffset;

                @Override
                public void onPageScrollStateChanged(int state) {
                    super.onPageScrollStateChanged(state);
                    mScrollState = state;
                    if(mScrollState == ViewPager.SCROLL_STATE_IDLE) mPreviousPageOffset = -1;
                }

                @Override
                public void onPageScrolled(int position, float positionOffset,
                        int positionOffsetPixels) {
                    super.onPageScrolled(position, positionOffset, positionOffsetPixels);
                    boolean isLastPosition = position == mPager.getAdapter().getCount() - 1;
                    if(isLastPosition && mScrollState == ViewPager.SCROLL_STATE_DRAGGING && mPreviousPageOffset == 0f && positionOffset == 0f){
                          //launchActivity
                    }
                    mPreviousPageOffset = positionOffset;
                }
            });

如果用户释放手指时,positionOffset还是变成0,但是滚动状态将是ViewPager.SCROLL_STATE_SETTLING


原文地址:http://www.itmmd.com/201412/301.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android SqlLite 报错 SQLiteOpenHelper.getDatabaseLocked - SQLiteOpenHelper.getReadableDatabase   上一篇
下一篇  Android 4.0.3 应用程序开发中碰见的一些小问题归类
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!