motionevent是什么?这篇文章全给你讲清楚了!

吉云

今天来跟大家聊聊我是咋折腾这个 MotionEvent 的。起初,我对这玩意儿完全没概念,只知道它是用来处理用户触摸屏幕的事件的。但是具体咋用,我是一头雾水。

于是我就开始动手实践。我先弄明白一件事,当用户触摸屏幕时,就会创建一个 MontionEvent 对象,这个对象里头包含关于发生触摸的位置、时间信息,还有一些其他的细节,都是些很重要的信息。然后,我发现这个 MotionEvent 主要是用来处理各种设备的输入事件的,像鼠标、笔、手指、轨迹球等等,但我平时用的最多的就是手指触摸屏幕,所以其他的我就没怎么细研究。

在研究 View 和 ViewGroup 的触摸事件时,我逐渐熟悉 MotionEvent 类,它就像是一个记录员,记录着我手指在屏幕上的各种动作,比如按下、移动、抬起等等,都有记录。然后我还发现一点,要想让 UI 控件监听运动事件,得让这个控件成为第一响应者,当然对于 UIViewController 视图控制器和 UIAPPlication 来说,就没这个要求。

motionevent是什么?这篇文章全给你讲清楚了!

我又深入解一下事件类型,也就是 MotionEvent 对象所代表的动作。比如说,我在屏幕上滑动一下手指,这个动作就会被 MotionEvent 记录下来,并生成一个对应的事件类型,还是挺有意思的。

后来我发现,MotionEvent 还有一个注释,上面写着它是一个用来报告移动事件的对象,覆盖的输入源比 pointer 类型要多。我当时就在想,这不就说明,MotionEvent 不只是能处理手指触摸,还能处理其他类型的输入设备吗?虽然这对我来说用处不是很大,但我还是解一下,毕竟技多不压身嘛

我重点研究一下 MotionEvent 中与触摸事件发生位置相关的函数:getX() 和 getY()。通过这两个函数,我可以获取到触摸事件发生位置的 x 和 y 坐标值,这些坐标值是相对的,也就是说,它们是相对于某个控件的左上角的。这一点很重要,因为在实际开发中,我们经常需要知道用户触摸的具体位置,来进行一些相应的操作。

  • 总结一下我的实践过程:
  • 开始动手:从零开始解 MotionEvent 的概念和作用。
  • motionevent是什么?这篇文章全给你讲清楚了!

  • 初步解:弄明白 MotionEvent 对象包含的信息和主要用途。
  • 逐渐熟悉:在研究 View 和 ViewGroup 的触摸事件时,掌握 MotionEvent 类的使用。
  • 深入解:理解事件类型的概念,以及 MotionEvent 对象所代表的动作。
  • 扩展解:查看 MotionEvent 的注释,解它可以处理的输入源。
  • 重点研究:掌握 getX() 和 getY() 函数的使用,获取触摸事件发生位置的坐标值。

motionevent是什么?这篇文章全给你讲清楚了!

经过这一番折腾,我对 MotionEvent 的理解也算是更上一层楼。虽然过程有些枯燥,但收获还是挺大的。我现在已经能熟练地使用 MotionEvent 来处理各种触摸事件,感觉自己又进步不少!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]