概述
- viewpager作为实际开发中最常用的控件,会碰到很多种情况;
比如:在引导页中,只能向左滑动,不能向右滑动;
又如:在某个场景下viewpager不能滑动,在某一时刻又能滑动;
- 本文主要给以下三种情况提供一种思路
(一)禁止viewpager滑动
(二)viewpager的单项滑动
(三)可以控制viewpager何时滑动
正文
- 首先我们自定义一个viewpager来实现上述的问题:
public class MyViewPager extends ViewPager {
private boolean isCanScroll = false;
private float startX;
private float moveX;
public MyViewPager(Context context) {
super(context);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 事件的分发
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return super.dispatchTouchEvent(ev);
}
/**
* 事件是否拦截
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev);
}
/**
* 事件的处理
*/
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (isCanScroll) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = ev.getX();
break;
case MotionEvent.ACTION_MOVE:
moveX = ev.getX() - startX;
startX=ev.getX();
if (moveX>0) {
return true;
}
}
return super.onTouchEvent(ev);
} else {