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");
}
});
我正在使用 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");
}
});