在HarmonyOS NEXT开发中要实现一个手势,支持左滑右滑,使用SwipeGesture手势控件,怎么识别是左滑还是右滑?
在HarmonyOS NEXT开发中要实现一个手势,支持左滑右滑,使用SwipeGesture手势控件,怎么识别是左滑还是右滑?
在HarmonyOS NEXT开发中,要实现一个支持左滑和右滑的手势识别,可以使用SwipeGesture
手势控件。要识别是左滑还是右滑,可以通过判断SwipeGesture
的方向来实现。以下是实现方法的示例代码:
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Component;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.Text;
import ohos.agp.window.dialog.ToastDialog;
import ohos.multimodalinput.event.TouchEvent;
import ohos.multimodalinput.gesture.SwipeGesture;
import ohos.multimodalinput.gesture.GestureListener;
public class MainAbility extends Ability implements GestureListener {
private Text text;
@Override
protected void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
text = (Text) findComponentById(ResourceTable.Id_text);
DirectionalLayout layout = (DirectionalLayout) findComponentById(ResourceTable.Id_layout);
layout.setGestureListener(this);
}
@Override
public boolean onTouchEvent(Component component, TouchEvent touchEvent) {
return false; // 传递给GestureListener处理
}
@Override
public boolean onSwipe(Component component, SwipeGesture swipeGesture) {
float swipeX = swipeGesturegetAngleX(); // 获取滑动手势在X轴上的角度
if (swipeX > 45 && swipeX < 135) {
// 右滑
new ToastDialog(this).setText("右滑").show();
text.setText("右滑");
} else if (swipeX < -45 && swipeX > -135) {
// 左滑
new ToastDialog(this).setText("左滑").show();
text.setText("左滑");
}
return true;
}
// 其他GestureListener方法可以为空实现
@Override
public boolean onClick(Component component) {
return false;
}
@Override
public boolean onLongPress(Component component) {
return false;
}
@Override
public boolean onDoubleTap(Component component) {
return false;
}
// 其他未使用的方法可以省略...
}
在这个示例中,我们通过实现GestureListener
接口并重写onSwipe
方法来识别滑动手势的方向。swipeGesture.getAngleX()
方法返回手势在X轴上的角度,根据这个角度可以判断是左滑还是右滑。角度在45度到135度之间表示右滑,角度在-45度到-135度之间表示左滑。
1 回答1.1k 阅读✓ 已解决
1 回答1.3k 阅读
1 回答1.2k 阅读
1 回答1.1k 阅读
1 回答1.1k 阅读
1 回答970 阅读
1 回答943 阅读
实现onAction(event:(event: GestureEvent) => void)监听,回调对象GestureEvent可以区分左右,参考文档:
1、SwipeGesture使用说明https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...
2、GestureEvent参数说明https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...
offsetX number 手势事件偏移量X,单位为vp,用于PanGesture手势触发场景,从左向右滑动offsetX为正,反之为负。