传播触摸事件

时间:2018-07-10 14:12:04

标签: android android-fragments android-view android-pageradapter android-touch-event

我在实现类似Instagram预览图像功能方面遇到麻烦(在长按显示对话框的长按对话框中)。所以我有Fragment作为其子的ViewPager。负责将数据馈送到Adapter的{​​{1}}具有一个带有ViewPager的imageView。该侦听器具有onTouchListener,用于检测gestureDetectoronDoubleTap。现在的事情是,我希望onLongPress在父onLongPress中使Dialog膨胀,并且在发布时我希望解散Fragment。但是出于某种原因,DialogMotionEvent.ACTION_UP从未在pagerAdapter中被调用,我猜想Dialog正在拦截这些动作,这实在令人沮丧,我几天都无法实现。 MotionEvent.ACTION_CANCEL系统的工作方式。这是代码:

PagerAdapter:

TouchEvent

片段:

private class MyOnTouchListener implements View.OnTouchListener {



    private GestureDetector gestureDetector = new GestureDetector(mContext, new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onDoubleTap(MotionEvent e)
            listener.performSomeAction();
            return super.onDoubleTap(e);

        }

        @Override
        public void onLongPress(MotionEvent e) {
            int action = e.getAction();
            switch (action) {
                case MotionEvent.ACTION_DOWN:
                    listener.setZoomLayout(imageUri);
                    break;
                case (MotionEvent.ACTION_UP):
                    listener.hideZoomLayout();
                    break;
                case MotionEvent.ACTION_CANCEL:
                    listener.hideZoomLayout();
                    break;
            }
            super.onLongPress(e);
        }

    });

    @Override
    public boolean onTouch(View view, MotionEvent event) {

        switch (view.getId()) {
            case R.id.ivSelectedImg1:
                gestureDetector.onTouchEvent(event);
                return true;
            case R.id.ivSelectedImg2:
                gestureDetector.onTouchEvent(event);
                return true;
            case R.id.ivSelectedImg3:
                gestureDetector.onTouchEvent(event);
                return true;
            case R.id.ivSelectedImg4:
                gestureDetector.onTouchEvent(event);
                return true;
                default: return false;
        }

    }
}

不要了解如何防止Dialog接管MotionEvent。我的意思是,我什至不确定该事件是否已在对话框中捕获,看起来好像已消失。在此先多谢!

0 个答案:

没有答案