HarmonyOS 如何检测自定义组件中的双击?

How to detect double-tap in custom component in HarmonyOS?

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

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

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;
            }
        };

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

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

    customComponent.setDoubleClickedListener(new Component.DoubleClickedListener() {
                @Override
                public void onDoubleClick(Component component) {
                    LogUtil.info(TAG, "double click detected");
                }
            });

支持在 SDK API 版本 5 或更高版本中双击组件。

如@Gowtham GS所述,示例用法如下:

customComponent.setDoubleClickedListener(new Component.DoubleClickedListener() {                
                @Override
                public void onDoubleClick(Component component) {
                    LogUtil.info(TAG, "double click detected");
                }
            });