Implement Circular ViewPager

Solution 1: By specifying a very large number as the actual invoice, but matching them with the actual range of the data / page set

ViewPager as a circular queue / packaging

Problem: This does not work if there are less than 4 items.


Solution-2 Adding 2 additional elements, i.e. last element in the first and first elements in the last and onPageSelected, depending on the position values, set the current element

Embedding circular scroll in the PagerAdapter

Problem: Additional pager indicators and additional fragments.


Solution-3: Using onTouchListener in ViewPager

Embedding circular scroll in the PagerAdapter

: MotionEvent . - ViewPager onTouchListener?

?

3rd solution , .

+4
1

2 3, , swipes ,

:

mPager.setOnTouchListener(new OnTouchListener(){

            @Override
            public boolean onTouch(View v, MotionEvent event) {


                if(event.getAction() == MotionEvent.ACTION_DOWN){
                    dxInitial=event.getX();
//                  
                }else if(event.getAction() == MotionEvent.ACTION_MOVE){
//                  
                    if(event.getX() - dxInitial > 50 && currentPage==1){

                    }else if(dxInitial - event.getX() > 50 && currentPage==5){
                        mPager.setCurrentItem(0,false);
                    }else if(dxInitial - event.getX() > 50 && currentPage==6){
                        mPager.setCurrentItem(1,false);
                    }else if(event.getX() - dxInitial > 50 && currentPage==0){
                        mPager.setCurrentItem(5,false);
                    }else if(event.getX() - dxInitial > 100 && currentPage==6){
//                      
                        mPager.setCurrentItem(1,false);
                    }
                }

                return false;
            }
        }); 

, , smoothScroll false

0

Source: https://habr.com/ru/post/1535567/


All Articles