首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在HarmonyOS中获取触摸事件的触摸坐标?

在HarmonyOS中获取触摸事件的触摸坐标可以通过以下步骤实现:

  1. 创建一个触摸事件监听器:通过实现TouchEventHandle接口或继承TouchEventListener类来创建一个触摸事件监听器。
  2. 注册触摸事件监听器:在需要获取触摸事件的界面或组件中,调用setTouchEventListener方法将触摸事件监听器注册到相应的组件上。
  3. 实现触摸事件处理方法:在触摸事件监听器中,实现onTouchEvent方法来处理触摸事件。
  4. 获取触摸坐标:在onTouchEvent方法中,通过TouchEvent对象的getPointerPosition方法获取触摸坐标。

以下是一个示例代码:

代码语言:txt
复制
public class MyTouchListener implements TouchEventHandle {
    @Override
    public boolean onTouchEvent(Component component, TouchEvent touchEvent) {
        int action = touchEvent.getAction();
        if (action == TouchEvent.PRIMARY_POINT_DOWN || action == TouchEvent.POINT_MOVE) {
            int pointerCount = touchEvent.getPointerCount();
            for (int i = 0; i < pointerCount; i++) {
                int x = touchEvent.getPointerPosition(i).getX();
                int y = touchEvent.getPointerPosition(i).getY();
                // 处理触摸坐标
                // ...
            }
        }
        return true;
    }
}

public class MyComponent extends Component {
    public MyComponent() {
        setTouchEventListener(new MyTouchListener());
    }
}

在上述示例中,MyTouchListener实现了TouchEventHandle接口,并重写了onTouchEvent方法来处理触摸事件。在onTouchEvent方法中,通过TouchEvent对象的getPointerPosition方法获取触摸坐标。

请注意,以上示例仅为演示目的,实际使用时需要根据具体的界面和组件进行相应的处理。

关于HarmonyOS的更多信息和相关产品介绍,您可以参考腾讯云的官方文档:HarmonyOS开发指南

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Android单个View触摸事件分发机制

    对于view触摸事件有三个动作: ACTION_DOWN:按下 ACTION_MOVE:移动 ACTION_UP:弹起 对于一个view,有touch事件,drag事件,click事件,所涉及到listener...,为该activity控件触摸事件进行分发,分发意思也就是说,如果该方法返回true,当你对activityview进行点击,长按,滑动等操作时Log信息如下: <span style="font-size...view<em>的</em>listener<em>中</em>,不会去执行任何操作,也就是<em>触摸</em><em>事件</em>到这里就截止了,不会再往下传。...默认<em>的</em>是返回<em>的</em>false 在此声明:当屏幕进行<em>触摸</em>时首先是activity感受到该<em>触摸</em><em>事件</em>,然后对<em>事件</em>进行分发处理,也就是说要不要传给activity<em>中</em><em>的</em>view进行处理。...activity首先将<em>事件</em>分发到你所定义<em>的</em>最外层<em>的</em>view,在本程序<em>中</em>我只定义了一个view,所以当dispatchTouchEvent返回false进行<em>事件</em>分发时就理所当然<em>的</em>分发给了我所定义<em>的</em>view

    82620

    行为变更 | Android 12 不受信任触摸事件

    触摸控制是 Android 系统同应用进行交互主要方式。Android 12 采取了额外措施,来确保触摸事件被正确地传递给了应该响应此事件应用,以此确保触摸交互直观和安全性。...具体地说,就是在 Android 12 ,如果触摸事件是从一个不同应用窗口传递,那么此事件会被屏蔽。...如果您应用不能使用上述 API,而是让触摸事件直接通过其窗口传递,那么在 Android 12 它们可能无法按预期传递到下层。...在之前,应用可以通过简单地使用一个全屏窗口,并将其标记为 FLAG_NOT_TOUCHABLE 来实现,如图 1 所示: 请注意,在以前操作系统版本,通过实际 UI 元素进行触摸事件,在这种情况下会传递到下层窗口中...接下来 如果您想了解到更多关于不受信任触摸事件以及它们例外情况,请查阅相关文档: 不受信任触摸事件 例外情况

    1.3K30

    WPF 从裸 Win 32 WM_Pointer 消息获取触摸点绘制笔迹

    本文将告诉大家如何在 WPF 里面,接收裸 Win 32 WM_Pointer 消息,从消息里面获取触摸点信息,使用触摸点信息绘制简单笔迹 开始之前必须说明是使用本文方法不会带来什么优势,既不能带来笔迹书写上加速...大家可以尝试在 Touch 事件监听函数添加断点,通过堆栈可以看到是从 Windows 消息循环来 可以从调用堆栈看到如下函数,此函数就是核心 WPF 框架里面从 WM_Pointer 消息获取触摸信息代码...,和从 WPF 提供 Touch 或 Stylus 事件里面获取触摸信息来源是相同 这时候也许有人会说,在 WPF 里面经过了一些封装,可能性能不如自己写。...且别忘了消息是从 UI 线程里面获取,无论你用不用 WPF 事件,在 WPF 底层解析消息获取触摸数据引发事件代码都会跑,也就是无论你用不用,需要 WPF 干活一点都没少。...在 Windows WISPTIS 模块里面,也会对触摸做一定平滑算法,丢弃某些过于离谱触摸点。

    14010

    touchesBegan 触摸事件

    一、概念介绍 1、在用户使用App过程,会产生各种各样事件,iOS事件可以分为3大类型: 1)触摸事件 2)加速计事件 3)远程操控事件 响应者对象UIResponder 在iOS...不是任何对象都能处理事件,只有继承了UIResponder对象才能接收并处理事件。...:(NSSet * _Nonnull)touches 2.加速计事件(一般用于可以产生加速计事件设备,微信摇一摇功能) 1)开始加速 - (void)motionBegan:(UIEventSubtype...; 5)获取当前触摸事件所处状态 触摸事件在屏幕上有一个周期,即触摸开始、触摸点移动、触摸结束,还有中途取消。...类 UIEvent:成为事件对象,记录产生时刻和类型,事件对象包含于当前多点触摸序列相对应所有触摸对象,还可以提供与特定视图或窗口相关联触摸对象。

    82220

    WPF 从触摸消息转触摸事件

    在 WPF 程序可能因为一些坑让程序触摸失效,如果此时还可以收到系统触摸消息,那么可以通过从触摸消息转触摸事件解决程序触摸失效但不适合所有触摸失效程序 在 WPF 触摸代码写不是很清真,特别是触摸事件可能出现一些坑...,WPF 在触摸线程等待主线程窗口关闭会让主线程和触摸线程相互等待 和 WPF 插拔触摸设备触摸失效 等,有时候在开机过程,如果启动快了,触摸设备还没准备好,刚好在 WPF 初始化过程 USB 触摸设备才准备好...但是还可以收到系统触摸消息,可以通过本文黑科技收到触摸 在 WPF 框架,触摸是从 PENIMC 里面获取,如果通过自己创建一个模拟触摸设备,请看 WPF 模拟触摸设备 也可以做到模拟一个触摸...,从 WPF 模拟触摸设备 找到通过封装 Down 等方法可以转换为事件,请看代码 在 GetTouchInputInfo 方法拿到输入类包含了当前触摸屏幕坐标触摸面积,拿到数据其实是原有是的百分之一也就是需要除以...因为主窗口期望是返回输入点是相对主窗口坐标而不是相对于屏幕坐标 所有代码放在 github 欢迎小伙伴帮忙修改 除了通过 Touch 消息之外,在 Win7 以上系统, Window 10

    1.2K20

    让 Flutter 在鸿蒙系统上跑起来

    鸿蒙系统 (HarmonyOS)是华为推出一款分布式操作系统,那么如何在保证开发迭代效率前提下,以相对低成本将移动应用快速移植到鸿蒙平台上呢?...交互能力实现 交互能力是支撑 Flutter 应用能够正常运行另一个基本要求。在 Flutter ,交互包含了各种触摸事件、鼠标事件、键盘录入事件传递及消费。...以触摸事件为例,Flutter 事件传递整个流程如下图所示: ?...Flutter 事件分发 iOS/Android 原生容器通过触摸事件回调 API 接收到事件之后,会将其打包传递至引擎层,后者将事件传发给 Flutter 框架层,并完成事件消费、分发和逻辑处理...(speechEventListener); // 语音录入事件 对于事件封装处理,可以复用 Android 已有的逻辑,只需要关注鸿蒙与 Android 在事件处理上对应关系即可,比如触摸事件部分对应关系

    2.5K41

    【如果你要学JS XIV】—— 移动端常用事件-移动端touch触摸事件

    导绪移动端浏览器兼容性较好,不需要考虑JS兼容性问题,可以放心使用原生JS书写效果,但是移动端也有自己独特地方。触屏事件touch (也称触摸事件) , Android和IOS都有。...console.log('我摸够了'); }) 2.触屏事件TouchEvent是一类描述手指在触摸平面 (触摸屏、触摸板等)状态变化事件。...因为平时我们都是给元素注册触摸事件,所以常用targetTocuhes3.TouchEvent触摸事件对象touches 正在触摸屏幕所有于指列衣,targetTouches 正在触摸当前DOM元素手指列表如果侦听是一个...targetTouches[0] 里面的pageX和pageY3.拖动原理:手指移动计算出手指移动距离,然后用盒子原来位置+手指移动距离4.手指移动距离 = 手指滑动位置 - 手指刚开始触摸位置... var div = document.querySelector('div'); // 获取手指初始坐标和盒子原来位置

    54300

    触屏事件

    touch:触摸事件 常用触摸事件如下 事件 描述 touchstart 手指触摸到dom元素时触发 touchmove 手指在dom元素上滑动时触发 touchend 手指离开dom元素时触发 触摸事件对象...触摸板等)状态变化事件,这类事件用于描述一个或多个触点,使开发者可以检测触点移动,触点增加和减少等等 上述三个事件都有各自事件对象 touchstart常用对象列表 触摸列表 描述 touches...正在触摸屏幕所有手指一个列表 targetTouches 正在触摸当前dom元素上手指一个列表 changedTouches 手指状态发生改变列表,从无到有,从有到无变化 targetTouches...{ //获取手指初始坐标 startX = e.targetTouches[0].pageX; startY = e.targetTouches...[0].pageY; //获取盒子原来坐标 x = this.offsetLeft; y = this.offsetTop;

    76410

    touchesBegan 触摸事件一、概念介绍二、方法介绍三、参数介绍:touches四、参数介绍:event

    一、概念介绍 在用户使用app过程,会产生各种各样事件,iOS事件可以分为3大类型: 事件类型.png 响应者对象UIResponder 在iOS不是任何对象都能处理事件...,通过forin循环来遍历NSSet每一个元素 当用户用一根手指触摸屏幕时,会创建一个与手指相关联UITouch对象, 保存着跟本次手指触摸相关信息,比如触摸位置、时间、阶段, 当手指离开屏幕时...timestamp; (5)获取当前触摸事件所处状态 触摸事件在屏幕上有一个周期,即触摸开始、触摸点移动、触摸结束,还有中途取消。...,readonly) CGFloat maximumPossibleForce; 方法: (1)返回当前触摸点在view上位置 这里返回位置是针对view坐标(以view左上角为原点(0,...view; 四、参数介绍:event UIEvent:称为事件对象,记录事件产生时刻和类型,事件对象包含与当前多点触摸序列相对应所有触摸对象,还可以提供与特定视图或窗口相关联触摸对象。

    2.5K100

    移动端touch事件处理

    关于这个事件的确切出发时间,文档并没有具体说明,咱们只能去猜测了。触摸事件还包含下面三个用于跟踪触摸属性       touches:表示当前跟踪触摸操作touch对象数组。  ...clientX:触摸目标在视口中x坐标。  clientY:触摸目标在视口中y坐标。  identifier:标识触摸唯一ID。  pageX:触摸目标在页面x坐标。  ...pageY:触摸目标在页面y坐标。         screenX:触摸目标在屏幕x坐标。screenY:触摸目标在屏幕y坐标。  target:触目的DOM节点目标。...更让我疑惑是,此时,这三个属性,都能正确获取到触点个数,有几根手指,就能有在各个属性,就会保存多少个touch对象。属性属性值touches保存当前一个触摸个数列表。...明白了touhes,targetTouches和changedTouches三者这一个小小差别,也就能理解,为何在我们判断滑动方向时,使用changedTouches获取触点在touchstart

    1.7K20

    触摸事件 touchstart、touchmove、touchend

    目录 触摸事件概述 触摸事件编码 触摸手指个数分析 触摸目标 DOM 元素分析 触摸位置分析 ---- 触摸事件概述 1、HTML5 , PC 端基于鼠标的界面互动主要是单击, 移动端界面交互方式主要是触摸...4、每个 Touch 对象包含属性如下: clientX:触摸目标在视口中x坐标。 clientY:触摸目标在视口中y坐标。 identifier:标识触摸唯一ID。...pageX:触摸目标在页面x坐标。 pageY:触摸目标在页面y坐标。 screenX:触摸目标在屏幕x坐标。 screenY:触摸目标在屏幕y坐标。...target:触摸DOM节点目标。 触摸事件编码 <!...3、上面是使用 JQuery 写法,推荐使用如下所示 JavaScript 方式,因为在获取回调函数 事件对象时,JQuery 方式会有问题,JavaScript 则是没有问题。 <!

    1.7K20

    移动端触屏事件

    触摸事件对象(TouchEvent) TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)状态变化事件。... //触摸事件对象 // 1.获取元素 // 2.手指触摸DOM元素事件 var div = document.querySelector('div' ); div.addEventL...正在触摸当前DOM元素手指列表        console.1og(e.targetTouches[0]); //targetTouches[0]就可以得到正在触摸dom元素第一个手指相关信息比如手指坐标等等...和 pageY 移动端拖动原理:    手指移动,计算出手指移动距离。...然后用盒子原来位置 + 手指移动距离 手指移动距离:  手指滑动位置 减去  手指刚开始触摸位置 拖动元素三步曲: (1) 触摸元素 touchstart: 获取手指初始坐标,同时获得盒子原来位置

    2.9K30

    第127天:移动端-获取触摸位置

    一、移动端轮播图滑动 1、先获取手指在轮播图元素上滑动方向(左右) (1)手指触摸开始时记录手指所在坐标X (2)获取界面上轮播图容器 var $carousels=$('.carousel')...; (3)注册滑动事件 (4)变量重复赋值 (5)结束触摸一瞬间记录最后手指所在坐标X (6)比较开始和结束坐标大小 (7)控制精度 获取每次手指滑动距离,当距离大于一定值时,就认为有方向变化...next':'prev'); 40 41 42 43 } 二、移动端获取触摸方式说明 1.touchstart事件        手指头触摸屏幕上事件 2.touchmove...clientX:触摸目标在视口中x坐标。 clientY:触摸目标在视口中y坐标。 identifier:标识触摸唯一ID。 pageX:触摸目标在页面x坐标。...pageY:触摸目标在页面y坐标。 screenX:触摸目标在屏幕x坐标。 screenY:触摸目标在屏幕y坐标。 target:触目的DOM节点目标。

    1.5K20

    WPF 开启Pointer消息存在

    本文记录在 WPF 开启 Pointer 消息坑 屏幕键盘 启用了Pointer之后,调用Textbox.Focus(),起不来屏幕键盘,必须点在它之上才行,触摸在它之上才行 使用屏幕绝对坐标而不是窗口坐标...默认 Pointer 消息是使用屏幕绝对坐标而不是窗口坐标 可能存在获取 Stylus 事件触摸点不准,此时可以通过获取 Touch 代替,详细请看 WPF will have a touch offset...表现是当前触摸被某个获取焦点窗口捕获,此时触摸点到一个后台窗口,未激活窗口上,那此窗口依然可以收到触摸消息,无论这个窗口是在哪个进程上,只需要此窗口所在进程开启 Pointer 消息即可 而原先交互是如果触摸被某个前台窗口捕获...,那么其他窗口将啥都收不到,包括 WM_Touch 消息或者实时触摸消息 滑动过程开启窗口触摸失效 在进行 Manipulation 过程,打开或者激活了窗口,将导致此窗口不接受触摸消息而触摸失效。...例如另一个进程文本框获取焦点时,在滑动 ListView 列表时,打开了窗口或者激活现有的窗口到前台获取焦点,在此窗口内进行触摸,可能会收不到触摸事件 原因是在进行 Manipulation 将会设置一些特殊内部字段参数

    83130
    领券