Прокрутка виджета слева на первом элементе - PullRequest
0 голосов
/ 21 января 2019

Можно ли определить, что первый элемент ViewPager пытается прокрутить влево?
Я пытаюсь получить опыт, подобный истории в Instagram, который закрывается при прокрутке слева на первом элементе.

Я могу удерживать и заполнять список пар в методе ViewPager.OnPageChangeListener интерфейса *1004* и проверять, повторяется ли 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 голосов
/ 22 января 2019

Я думаю, что вы хотите использовать PageTransformer , который даст вам позицию с - или + в зависимости от направления перетаскивания страницы. Вам просто нужно обнаружить ИЗМЕНЕНИЕ в знаке этого значения.

...