在drawerView中触摸处理,如drawerLayout

时间:2015-02-02 21:16:24

标签: android gridview android-studio touch drawerlayout

我有一个自定义视图,如抽屉布局,有两个孩子。一个gridView,它被刷新(如drawerLayout中的listview)和另一个子节点作为内容。像抽屉布局我想要如果检测到触摸和滚动触摸处理自定义布局(调用onTouchEvent()),但如果触摸是一个点击gridView项目gridView处理它。所以我想要iterceptTouchEvent()并使用GestureDEtector来检测滚动,但那不起作用。

   @Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    mGestureDetector.onTouchEvent(ev);
    if(isScrolling) {
         isScrolling = false;
         onTouchEvent(ev);
        }
     return false;
}

  public class touchDetector extends GestureDetector.SimpleOnGestureListener{


    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        Log.d("*********","ONScroll");
        isScrolling = true;
        return super.onScroll(e1, e2, distanceX, distanceY);
    }


}

1 个答案:

答案 0 :(得分:0)

你正在做的事情是复杂的TouchListener是你所需要的:

public boolean onTouch(View v, MotionEvent event) {
    int viewId = v.getId();

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN: {
            switch (viewId) {
                case R.id.viewId1: {
                    ...
                    break;
                }
                case R.id.viewId2: {
                    ...
                    break;
                }
            }
            break;
        }
        case MotionEvent.ACTION_UP: {
            switch (viewId) {
                ...
                }
            }
            break;
        }
    }
    return false;
}

因此,您可以处理特定视图的特定操作,如果您想知道用户是否正在滚动,只需将MotionEvent的getHistoricalX()getHistoricalY()getX()或{{进行比较在getY()中1}},因此您将了解原始触摸点与当前触摸点之间的差异