允许同时进行手势控制

k4ymrczo  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(223)

这个问题可能有点具体,我发现这个问题很难回答,但我会尽我所能解释清楚。
我开发了一个可以滑动打开的导航菜单,它通过监听活动中主容器上的滚动手势来实现。这可以在下面看到。

findViewById(R.id.maincontainer).setOnTouchListener(new View.OnTouchListener() {
            @SuppressLint("ClickableViewAccessibility")
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                mGestureDetector.onTouchEvent((event));
                if(event.getAction() == MotionEvent.ACTION_UP){
                    animateMenu(findViewById(R.id.navMenu), !menuShouldOpen);
                    menuShouldOpen = false;
                }
                return true;
            }
        });

    private class GestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            float goTo = defMenuTranslation;
            float difference = e2.getX() - e1.getX();
            ObjectAnimator animation;
            goTo += difference;
            if (goTo <= 0f) {
                findViewById(R.id.navMenu).setTranslationX(goTo);
            }
            menuShouldOpen = goTo > defMenuTranslation / 3;
            return super.onScroll(e1, e2, distanceX, distanceY);
        }
    }

我的问题是,容器中有一个片段,其中包含一个覆盖整个屏幕的滚动视图。因为scrollview需要手势,所以菜单的手势控件将不起作用。有没有一种方法可以让这两者同时发挥作用?我的意思是,向上和向下的手势会像往常一样滚动滚动视图,但是向两边的手势会滚动我的菜单。
我尝试将touch listener附加到容器的同级,而不是容器本身,但效果相反,您只能使用手势打开菜单,滚动视图不会移动。
我相信这个问题归根结底是我是否能同时倾听多个观点的手势?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题