美文网首页
ViewPager 的使用

ViewPager 的使用

作者: geaosu | 来源:发表于2019-07-27 20:46 被阅读0次

    ViewPager去掉切换动画

    如切换到4时会先切换到1->2->3->4动画
    
    第二个参数false
    
    viewPager.setCurrentItem(i, false);  
    

    禁止左右滑动的ViewPager
    这个是在简友的博客中看到了, 这里贴个地址:
    https://www.jianshu.com/p/0a76b7f65c94

    /**
     * 禁止左右滑动的ViewPager
     */
    import android.content.Context;
    import android.support.v4.view.ViewPager;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    
    public class NoScrollViewPager extends ViewPager {
        private boolean isScroll = false;
    
        public NoScrollViewPager(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public NoScrollViewPager(Context context) {
            super(context);
        }
    
        /**
         * 1.dispatchTouchEvent一般情况不做处理
         * ,如果修改了默认的返回值,子孩子都无法收到事件
         */
        @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
            return super.dispatchTouchEvent(ev);   // return true;不行
        }
    
        /**
         * 是否拦截
         * 拦截:会走到自己的onTouchEvent方法里面来
         * 不拦截:事件传递给子孩子
         */
        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            // return false;//可行,不拦截事件,
            // return true;//不行,孩子无法处理事件
            //return super.onInterceptTouchEvent(ev);//不行,会有细微移动
            if (isScroll) {
                return super.onInterceptTouchEvent(ev);
            } else {
                return false;
            }
        }
    
        /**
         * 是否消费事件
         * 消费:事件就结束
         * 不消费:往父控件传
         */
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
            //return false;// 可行,不消费,传给父控件
            //return true;// 可行,消费,拦截事件
            //super.onTouchEvent(ev); //不行,
            //虽然onInterceptTouchEvent中拦截了,
            //但是如果viewpage里面子控件不是viewgroup,还是会调用这个方法.
            if (isScroll) {
                return super.onTouchEvent(ev);
            } else {
                return true;// 可行,消费,拦截事件
            }
        }
    
        public void setScroll(boolean scroll) {
            isScroll = scroll;
        }
    }
    
    

    ViewPager禁止左右滑动的其他方式

    
    import android.content.Context;
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    import android.support.v4.view.ViewPager;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
     
    public class CustomScrollViewPager extends ViewPager {
        //是否可以左右滑动?true 可以,像Android原生ViewPager一样。
        // false 禁止ViewPager左右滑动。
        private boolean scrollable = false;
     
        public CustomScrollViewPager(@NonNull Context context) {
            super(context);
        }
     
        public CustomScrollViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
     
        public void setScrollable(boolean scrollable) {
            this.scrollable = scrollable;
        }
     
        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            return scrollable;
        }
     
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
            return scrollable;
        }
    }
    
    
    
    

    相关文章

      网友评论

          本文标题:ViewPager 的使用

          本文链接:https://www.haomeiwen.com/subject/cjcyrctx.html