Viewpager在第一项上向左滚动

时间:2019-01-21 14:36:20

标签: android android-viewpager

是否可以检测是否试图将ViewPager的第一项向左滚动?
我正在尝试获得一种类似Instagram故事的体验,即在向左滚动第一项时视图会关闭。

我可以在ViewPager.OnPageChangeListener界面的onPageScrolled方法中按住并填充一个配对列表,并检查position 0 scrolled by 0.0是否重复N次,关闭视图,但听起来很多余。

还有其他建议吗?提前致谢。

private int currentPagePosition = 0;
ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {

    @Override
    public void onPageScrolled(int i, float v, int i1) {
        // TODO Hold pair list and fill with i and v values
        Log.d("ViewPager", "onPageScrolled from " + i + " by " + v);
    }

    @Override
    public void onPageSelected(int selectedPagePosition) {
        Log.d("ViewPager", "onPageSelected pos: " + selectedPagePosition);
        if (currentPagePosition != selectedPagePosition) {
            // do something
        }
        currentPagePosition = selectedPagePosition;
    }

    @Override
    public void onPageScrollStateChanged(int i) {
        switch (i) {
            case ViewPager.SCROLL_STATE_IDLE:
                if (currentPagePosition == 0) {
                    // TODO if pair list contains N times repeated 0 to 0.0 items close the view
                }
                Log.d("ViewPager", "onPageScrollStateChanged IDLE on " + currentPagePosition);
                break;
            case ViewPager.SCROLL_STATE_DRAGGING:
                Log.d("ViewPager", "onPageScrollStateChanged DRAGGING from " + currentPagePosition);
                break;
        }
    }
};

1 个答案:

答案 0 :(得分:1)

我认为您想使用PageTransformer,该位置将根据页面的拖动方向为-或+位置。您只需要检测该值的符号变化即可。