5

我正在使用 Java SDK 在 HarmonyOS 中创建一个自定义组件,我必须在其中双击执行一些任务。但我无法检测到双击事件。

在 Android 中,借助GestureDetector类,我们可以检测双击事件,如下所示:

GestureDetector gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener(){
            @Override
            public boolean onSingleTapConfirmed(MotionEvent e) {
                return super.onSingleTapConfirmed(e);
            }

            @Override
            public boolean onDoubleTap(MotionEvent e) {
                return super.onDoubleTap(e);
            }
        });

在 HMOS 中,我尝试使用Component.TouchEventListener检测双击,如下所示:

Component.TouchEventListener touchEventListener = new TouchEventListener() {
            @Override
            public boolean onTouchEvent(Component component, TouchEvent touchEvent) {
                if(touchEvent.getPointerCount() == 1) {
                    LogUtil.info(TAG, "single click detected");
                }

                if(touchEvent.getPointerCount() == 2) {
                    LogUtil.info(TAG, "double click detected");
                }
                return false;
            }
        };

但是,它没有检测到双击。在双击时,它也打印了单次点击检测

4

2 回答 2

2

SDK API 5及以上版本支持组件双击。

正如@ Gowtham GS提到的,示例用法如下:

customComponent.setDoubleClickedListener(new Component.DoubleClickedListener() {                
                @Override
                public void onDoubleClick(Component component) {
                    LogUtil.info(TAG, "double click detected");
                }
            });
于 2021-09-10T06:12:12.100 回答
2

尝试注册Component.DoubleClickedListener ,您将能够检测到自定义组件中的双击,示例用法

    customComponent.setDoubleClickedListener(new Component.DoubleClickedListener() {
                @Override
                public void onDoubleClick(Component component) {
                    LogUtil.info(TAG, "double click detected");
                }
            });
于 2021-09-07T10:33:23.140 回答