Control which directions the ViewPager can be scrolled, dynamically with UI feedback

后端 未结 5 491
既然无缘
既然无缘 2020-12-13 22:40

I\'m working on an app which uses many pages to swipe through, however at some pages I would like to be able to prevent scrolling to the next page until they\'ve selected so

5条回答
  •  时光取名叫无心
    2020-12-13 23:30

    you can use your custom view pager

    public class CustomViewPager extends ViewPager
    {   
    float mStartDragX;
    OnSwipeOutListener mListener;
    Context context;
    public static boolean enabled;
    
    public CustomViewPager(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        this.context = context;
        enabled = true;
    }
    
    
    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
    
        if (enabled) //view pager scrolling enable if true
        {
            return super.onTouchEvent(event);
        }
        return false;
    }
    
    
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev)
    {
    
        if (enabled)enter code here
        {
            return super.onInterceptTouchEvent(ev);
        }
        else  // view pager disable scrolling 
        {
            float x = ev.getX();
            switch (ev.getAction())
            {
                case MotionEvent.ACTION_DOWN:
                    mStartDragX = x;
    
                    break;
                case MotionEvent.ACTION_MOVE:
                    if (mStartDragX < x - 100)//100 value velocity
                    {
                        //Left scroll 
                        //return super.onInterceptTouchEvent(ev); 
                    }
                    else
                        if (mStartDragX > x + 100)
                        {
                            //Right scroll 
                            //return super.onInterceptTouchEvent(ev);
                        }
                    break;
            }
        }
    
        return false;
    
    }
    
    
    public void setOnSwipeOutListener(OnSwipeOutListener listener)
    {
        mListener = listener;
    }
    
    public interface OnSwipeOutListener
    {
    
        public void onSwipeOutAtStart();
    
    
        public void onSwipeOutAtEnd();
    }
    

    }

提交回复
热议问题