Android ViewPager 미끄럼 방지 방법 및 원리

5724 단어
  • ViewPager가 미끄럼을 금지하려면 기존의 이벤트 분배 소모의 논리를 파괴해야 한다.
  • dispatchTouchEvent: 배달 이벤트
  • onInterceptTouchEvent: 차단 이벤트
  • onTouchEvent: 소모 이벤트
  • ViewPager에서 onInterceptTouchEvent, onTouchEvent 방법을 다시 썼습니다. ViewPager의 미끄럼을 금지하는 것은 ViewPager가 손가락을 소모하지 않고 촉발하는 사건입니다.
  • ViewPager가 손가락이 촉발하는 사건을 영원히 막지 않도록 하고,onInterceptTouchEvent는false로 돌아갑니다.
  • ViewPager가 손가락을 소모하지 않고 촉발하는 이벤트를 원터치 이벤트가false로 되돌려줍니다.
  • ViewPager는 ViewGroup에서 상속되므로 사용할 때 하위 View를 추가해야 합니다.ViewPager의 미끄럼을 금지하는 것은 손가락을 소모하지 않는 사건이지만 ViewPager의 원래 사건 분배 논리를 파괴할 수 없습니다. ViewPager의 dispatchTouchEvent()를 건드리지 마십시오.
  • public class NoScrollViewPager extends ViewPager {
        // false   ViewPager    。
        // true   ViewPager
        private boolean isScroll = false;
    
        public NoScrollViewPager(@NonNull Context context) {
            this(context, null);
        }
        public NoScrollViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
        public void setScrollable(boolean isScroll) {
            this.isScroll = isScroll;
        }
        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            if (!isScroll){
                //           false
                return isScroll;
            }else {
                //   ViewPager             ViewPager  onInterceptTouchEvent()
               return super.onInterceptTouchEvent(ev)
            }
        }
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
            if (!isScroll){
                //           false.
                return isScroll;
            }else {
                //   ViewPager           ViewPager  onTouchEvent.
               return super.onTouchEvent(ev)
            }
        }
    }
    

    좋은 웹페이지 즐겨찾기