自定义ViewPager:禁止滑动和无切换效果

原理和代码比较简单,就不再多说原理。但使用场景较多,特此记录,代码如下:

public class NoScrollViewPager extends ViewPager {
     private boolean noScroll = true;
     public NoScrollViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
     public NoScrollViewPager(Context context) {
        super(context);
    }
     public void setNoScroll(boolean noScroll) {
        this.noScroll = noScroll;
    }
     @Override
    public void scrollTo(int x, int y) {
        super.scrollTo(x, y);
    }
    //返回false表示不消费事件
    @Override
    public boolean onTouchEvent(MotionEvent arg0) {
        if (noScroll)
            return false;
        else
            return super.onTouchEvent(arg0);
    }
    //返回false表示不拦截事件
    @Override
    public boolean onInterceptTouchEvent(MotionEvent arg0) {
        if (noScroll)
            return false;
        else
            return super.onInterceptTouchEvent(arg0);
    }
     @Override
    public void setCurrentItem(int item, boolean smoothScroll) {
        super.setCurrentItem(item, smoothScroll);
    }
     @Override
    public void setCurrentItem(int item) {
        //false 表示没有切换动画
        super.setCurrentItem(item,false);
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,080评论 2 89
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,165评论 1 32
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,276评论 4 61
  • 第二章 2.2 解构Hello Object-C程序 .m扩展名,代表message,是OC的一个主要特性 编译器...
    RoFF阅读 1,653评论 1 0
  • 朋友来消息抱怨,看起来年纪与我们相仿的一年轻小伙儿在几乎人人有座的公交上挤座位,加重了原本就要上班的沉重心情,并大...
    派大丽Pally阅读 460评论 0 1