【问题标题】:touch handling in a customView like drawerLayout像drawerLayout这样的customView中的触摸处理
【发布时间】:2015-02-02 21:16:23
【问题描述】:

我有一个自定义视图,例如有两个 child 的抽屉布局。一个滑动的gridView(如drawerLayout中的listview)和另一个孩子作为内容。就像抽屉布局一样,如果检测到触摸并且正在滚动触摸在自定义布局中处理它(调用 onTouchEvent() ),但如果触摸是单击 gridView 项目 gridView 处理它。所以我 ovveride 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);
    }


}

【问题讨论】:

    标签: android gridview android-studio touch drawerlayout


    【解决方案1】:

    你只需要复杂的 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() 中的 ActionDown case 进行比较这样你就会知道原始接触点和当前接触点之间的区别

    【讨论】:

    • 谢谢,但如果 onInterceptTouchEvent 返回 false OnTouch() 方法,则不调用触摸子位置。
    • 只需将触摸监听器附加到您的活动/片段
    猜你喜欢
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多