【问题标题】:Indicate after swiping the last page in ViewPager在 ViewPager 中滑动最后一页后指示
【发布时间】:2012-10-22 12:48:42
【问题描述】:

我创建了一个带有圆形页面指示器的视图寻呼机。它工作正常。 这是我的新要求: 当我在最后一页/第一页并尝试滑动到下一页/上一页时,我的屏幕应该向滑动方向移动至少 30% 并返回到原来的位置,因为没有更多页面可以导航?当然,我在顶部有页面指示器,它告诉我在可用页面中的位置。我希望我的要求很明确。我怎样才能实现它?请帮我。提前致谢。

【问题讨论】:

    标签: android android-viewpager viewpagerindicator


    【解决方案1】:
    ViewPager.OnPageChangeListener pagerListener = new ViewPager.OnPageChangeListener() {
            boolean lastPageChange = false;
    
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels){
                int lastIdx = mPgScreenAdapter.getCount() - 1;
    
                Log.d(TAG, "pos:" + position);
                if(lastPageChange && position == lastIdx)
                    PPIntent.changeScene(curAct, new Intent(curAct, LoginActivity.class), true);
            }
            @Override
            public void onPageSelected( int i) {
                pgText.setCurrentItem(i/2);
            }
            @Override
            public void onPageScrollStateChanged(int state) {
                int lastIdx = mPgScreenAdapter.getCount() - 1;
    
                int curItem = pgScreen.getCurrentItem();
                if(curItem==lastIdx /*&& lastPos==lastIdx*/  && state==1)   lastPageChange = true;
                else                                                         lastPageChange = false;
            }
        };
    

    【讨论】:

    • 这很好用,只是启动新活动的代码可以移动到 if 条件内的 pagesscrollstatechanged,因为 onPageScrolled 会被多次调用..
    • 如果用户向后滑动查看器的第一页,你能告诉我如何向用户敬酒(“这是第一页”)。谢谢@icarus2n
    【解决方案2】:

    这是自动的。操作系统内置了指示器来告诉用户视图不能再滑动了。操作系统将在屏幕一侧显示发光,用户无法进一步拉动。

    不确定您是否可以创建自己的独特 UI 来处理此问题 - 操作系统确实提供了一个开箱即用的指示器。

    【讨论】:

    • 除非我不小心关闭了它,否则我已经使用 ViewPager 好几个月了,它从来没有自动完成过滑动效果。不过,它确实适用于 GridView、TextView 和 ListView。
    • 这取决于操作系统,我用 2.3 和 4.1 设备检查了这一点,实现方式不同。在 2.3 中根本没有任何指示,在 4.1 中有发光副作用,我相信你将不得不自己实现这个
    • FWIW - 这称为“Overscroll”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多