HarmonyOS 监听滑动事件左滑,右滑,上滑,下滑,以及返回值的意义
btn2.setTouchEventListener(new Component.TouchEventListener() { @Override public boolean onTouchEvent(Component component, TouchEvent touchEvent) { //参数1 代表手指的索引 单手指传递0就好了 MmiPoint pointerPosition = touchEvent.getPointerPosition(0); float x = pointerPosition.getX(); float y = pointerPosition.getY(); int action = touchEvent.getAction(); switch (action) { //按下 case TouchEvent.PRIMARY_POINT_DOWN: startX = x; startY = y; btn2.setText("按下(" + x + "," + y + ")"); break; //弹起 case TouchEvent.PRIMARY_POINT_UP:// btn2.setText("弹起(" + x + "," + y + ")"); break; //滑动 case TouchEvent.POINT_MOVE:// btn2.setText("滑动"+count); endX = x; endY = y; //右滑动 控制左边滑动浮动不超过100 if (endX > startX && Math.abs(endX - endY) < 100) {btn2.setText("右滑(" + x + "," + y + ")"); } else if (endX < startX && Math.abs(endX - endY) startY && Math.abs(endX - startX) < 100) {btn2.setText("下滑(" + x + "," + y + ")"); } else if (endY < startY && Math.abs(endX - startX) < 100) {btn2.setText("上滑(" + x + "," + y + ")"); } break; } // 返回为true 所有动作都会执行并返回代码 // 返回false 表示只有一个动作会触发当前方法并执行对应代码 return true; } });
滑动黑色区域 会改变
写了一个100 是为了防止滑动的时候分明是左滑但是会判定为右边滑动这样的情况。可以根据自己的实际需求去改写
// 返回为true 所有动作都会执行并返回代码// 返回false 表示只有一个动作会触发当前方法并执行对应代码return true;