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

为什么onTouchEvent和onDraw中的MotionEvent.getx()结果不一样?

在Android开发中,onTouchEvent和onDraw是两个不同的方法,分别用于处理触摸事件和绘制视图。它们的执行时机和目的不同,因此MotionEvent.getx()方法在这两个方法中返回的结果也会有所不同。

  1. onTouchEvent方法: onTouchEvent方法是用于处理触摸事件的,当用户触摸屏幕时,系统会调用该方法来处理触摸事件。在该方法中,MotionEvent对象包含了触摸事件的详细信息,包括触摸点的坐标等。而MotionEvent.getx()方法会返回触摸点相对于视图左上角的x坐标值。
  2. onDraw方法: onDraw方法是用于绘制视图的,当视图需要进行绘制时,系统会调用该方法来执行绘制操作。在该方法中,我们可以使用Canvas对象进行绘制操作。由于绘制操作是在视图的坐标系中进行的,而不是触摸事件的坐标系中,因此MotionEvent.getx()方法返回的是相对于视图坐标系的x坐标值。

因此,onTouchEvent和onDraw中的MotionEvent.getx()结果不一样是因为它们分别处于不同的上下文中,一个是处理触摸事件的上下文,一个是进行视图绘制的上下文。在处理触摸事件时,获取的是触摸点相对于视图左上角的坐标值;而在绘制视图时,获取的是相对于视图坐标系的坐标值。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mpp
  • 腾讯云云原生应用引擎:https://cloud.tencent.com/product/tke
  • 腾讯云数据库服务:https://cloud.tencent.com/product/cdb
  • 腾讯云服务器运维:https://cloud.tencent.com/product/cvm
  • 腾讯云音视频处理:https://cloud.tencent.com/product/mps
  • 腾讯云人工智能服务:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云存储服务:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙服务:https://cloud.tencent.com/product/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2分18秒
2分43秒

ELSER 与 Q&A 模型配合使用的快速演示

6分6秒

普通人如何理解递归算法

1分27秒

ai视频智能识别系统

1分19秒

020-MyBatis教程-动态代理使用例子

14分15秒

021-MyBatis教程-parameterType使用

3分49秒

022-MyBatis教程-传参-一个简单类型

7分8秒

023-MyBatis教程-MyBatis是封装的jdbc操作

8分36秒

024-MyBatis教程-命名参数

15分31秒

025-MyBatis教程-使用对象传参

6分21秒

026-MyBatis教程-按位置传参

6分44秒

027-MyBatis教程-Map传参

领券