5 Stimmen

Wie Sie eine Anzeige erhalten, dass der Benutzer versucht, in einem ViewPager überzuscrollen

Ich möchte eine neue Aktivität starten, sobald ein Benutzer versucht zu scrollen, wenn er sich auf dem letzten Fragment befindet (wenn der Bounce-Effekt auftritt). Ich verwende ViewPagerIndicator

Der folgende Code startet die Aktivität, sobald das letzte Fragment sichtbar ist.

Irgendwelche Ideen?

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

        }

    });

3voto

Nikola Despotoski Punkte 48592

Wir sind nur an Fällen interessiert, in denen wir Overscroll haben, das heißt 0 und mPager.getAdapter().getCount() - 1. Wenn der Zustand des Scrollers ViewPager.SCROLL_STATE_DRAGGING bedeutet, dass der Finger des Benutzers noch auf dem Bildschirm ist und die Ansicht zieht. Die Bedingung unten benötigt aufeinanderfolgende 0 positionOffset, um zu entscheiden, ob sie in den Overscroll-Modus wechselt.

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

Wenn der Benutzer den Finger loslässt, wird der positionOffset noch auf 0 gehen, aber der Scroller-Zustand wird ViewPager.SCROLL_STATE_SETTLING sein oder wir erhalten nur einmal 0 für positionOffset.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X