应用场景这里就不说了,实现原理就是自定义一个ViewPager,重写onTouchEvent()onInterceptTouchEvent()方法,判断是否要滑动,然后对外提供两个方法,一个设置是否可以滑动,一个是获取当前是否可以滑动,为了方便开发,最后自定义了一个属性,下面我直接上代码

.Java文件

//** * 可禁止滑动的ViewPager */public class CanBanScrollViewPager extends ViewPager {    private boolean isCanScroll;/*是否可以滑动*/    public CanBanScrollViewPager(Context context) {        super(context);    }    public CanBanScrollViewPager(Context context, AttributeSet attrs) {        super(context, attrs);        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CanBanScrollViewPager);        /*获取布局中设置的属性*/        isCanScroll = a.getBoolean(R.styleable.CanBanScrollViewPager_isScroll, false);        a.recycle();    }    public void setCanScroll(boolean isCanScroll) {    /*对外公开的方法,设置是否可以滑动*/        this.isCanScroll = isCanScroll;    }    public boolean isCanScroll() {    /*对外公开的方法,获取当前是否可以滑动*/        return isCanScroll;    }    @Override    public boolean onTouchEvent(MotionEvent ev) {    /*重写此方法,判断当前是否可以滑动,如果可以,正常调用父类的方法,该干嘛干嘛!如果不可以滑动,直接返回false,不做任何触摸事件的处理*/        if (isCanScroll()) {            return super.onTouchEvent(ev);        }        return false;    }    @Override    public boolean onInterceptTouchEvent(MotionEvent ev) {    /*这里意思和上面的重写方法差不多,不多解释*/        if (isCanScroll()) {            return super.onInterceptTouchEvent(ev);        }        return false;    }}

attrs.xml

    "CanBanScrollViewPager">        "isScroll" format="boolean" />    </declare-styleable>

layout.xml >用到自定义属性时记得一定要加命名空间,否则无法使用自定义属性

CanBanScrollViewPagerxmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="match_parent"        app:isScroll="false" />

更多相关文章

  1. Android(安卓)4.0 系统语言预设问题
  2. [置顶] activity配置信息详解
  3. android Java StringBuffer对象的append方法
  4. Android中ImageView使用网络图片资源的方法
  5. Android定时器之Handler的postDelyed方法
  6. Android(安卓)View之基础介绍(Android开发艺术探索)
  7. android 预装第三方apk的方法
  8. unity3d android真机测试的2种方法
  9. Android(安卓)CTS测试修改测试结果和调试方法

随机推荐

  1. android扫描sdcard中的音视频及图片等文
  2. Fragment的快速入门
  3. Android中Handler消息传递机制
  4. 认识Android与Android环境的搭建
  5. android 仿iphone tab实现
  6. Android(安卓)MVP模式 入门
  7. android在framework层增加自己的service
  8. 关于Android(安卓)Resource的点点滴滴
  9. 【移动开发】因项目需要,今天起学习移动开
  10. [来自iPc.me] 金山 WPS Office 手机移动