不码原理,提供自定义类
项目需求,根据是否解锁去判断是否可以继续向左滑动(只要解锁过得向右滑动不处理,只关注向左滑动)
/**
* Created by Android Studio.
* User: melo
* Date: 2019/5/14
* Time: 10:35
* Description:是否可以向左滑动的viewpager
*/
public class CustomViewpager extends ViewPager {
//上一次x坐标
private float downX;
private boolean nextIsCanScrollble;
public CustomViewpager(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public CustomViewpager(Context context) {
super(context);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN://记录下点坐标
downX = ev.getX();
break;
case MotionEvent.ACTION_MOVE:
float moveX = ev.getX() - downX;
if (moveX > 0) {
// TODO: 2019/5/17 向右滑 不处理,有需要自己可以去做其他逻辑
} else {
//向左滑 处理,判断 下一个数组是否为true,是则可以滑动,否则不可滑动
if (!nextIsCanScrollble) {
return true;
}
}
downX = ev.getX();//不断记录新的坐标
break;
}
return super.dispatchTouchEvent(ev);
}
/**
* 下一个是否可以右滑
*
* @param nextIsCanScrollble
*/
public void setNextIsCanScrollble(boolean nextIsCanScrollble) {
this.nextIsCanScrollble = nextIsCanScrollble;
}
}
使用:
vp.setNextIsCanScrollble(false);