我敢肯定有一些关于它的帖子,我以前浏览过它们,但是现在找不到它们。

我想检测用户从页面边缘(例如左边缘)滑动Viewpager时的操作。我想对这种滑动进行一些特殊的处理,例如显示菜单。

是否有ViewPager内置(?)支持?我隐约记得它是。否则,我必须实现自己的逻辑来检测这些动作。

谁能给我一些信息?

最佳答案

我认为,您应该重写ViewPager容器的几种方法。例如,如果是LinearLayout

public class Liner extends LinearLayout {

public Liner(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
}

//Remember start points
float mInitX;
float mInitY;
// TouchSlop value
float mSomeValue=20F;
//
boolean mCatched=false;

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

    switch (ev.getAction()) {
    case MotionEvent.ACTION_DOWN:
        mInitX=ev.getX();
        mInitY=ev.getY();
        break;

    default:
        break;
    }

    mCatched=mInitX<10 && Math.abs(ev.getX()-mInitX)>mSomeValue;

    return mCatched;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    if(mCatched){
        //Do all you want here
    }
    return true;
}


}

如果您与TeRRo答案结合使用(将其检测器放在onTouchEvent()内),您可能会得到不错的结果。但是使用DrawerLayout的最佳方法。

祝好运!

10-08 15:29