代码很简单,注释很详细,直接贴代码,省心又省力。
package com.hjk.shiny.weshop.overwrite;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
/**
* Created by Maibenben on 2017/12/7.
*/
public class CustomViewPager extends ViewPager{
//滑动开关控制常量
private boolean enable=false;
//重写构造
public CustomViewPager(Context context){
super(context);
}
//重写构造
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
//触碰事件
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(this.enable){
//开关打开,事件不进行拦截
return super.onTouchEvent(ev);
}
//默认拦截状态
return false;
}
//拦截事件监听
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(this.enable){
//开关打开,即处理拦截下来的touch事件
return super.onInterceptTouchEvent(ev);
}
//默认状态不处理来接下来的事件
return false ;
}
//传递触摸事件
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//处理事件的分发,将拦截到的事件分发到viewpager下的子view中去
//这个拦截了就没有后续事件发生了,到viewpager为止
//可以拦
if(this.enable){
return super.dispatchTouchEvent(ev);
}
//一般都不拦的
return super.dispatchTouchEvent(ev);
}
//留一个方法修改开关的开启关闭状态
public boolean setViewPagerState(Boolean b){
this.enable=b;
return this.enable;
}
}
到此为止,多谢阅读!!!