Android知识点(转)——触碰事件监听中横纵坐标的获取方法:getX和getRawX的区别

先扯两句

首先声明,这篇博客解决方案取自SunTree_X的getX和getRawX的区别

PS:大家可以直接通过链接跳转到原博客查看。

今天去了友盟UBDC大数据技术峰会,大牛挺多的,而大牛讲的东西呢。。。可以说大多没什么用。


Android知识点(转)——触碰事件监听中横纵坐标的获取方法:getX和getRawX的区别_第1张图片
笑cry

当然,这么说也有些不负责任,毕竟大牛们都这么高屋建瓴,指引的是方向,我这种小菜鸟自然是听不懂的。但是如果有机会,还是建议大家多参加一些这种会议。虽然可能听不懂,而且也不是技术分享会,但确实能够对主办方更多一些的了解。当然,也不是全然没用,其中《硅谷增长黑客实战笔记》的作者曲卉(这里不是打广告啊,就小老儿我的博客浏览量,也不够接广告的啊)所讲的部分,还是我这个阶段能够听懂的,而且相对于我当前的阶段来说也是比较适用的。

这部分后面会专门写一个归纳博客,这里还是先给大家展示个神器,叫Android知识点——目录,好了,闲言少叙,下面进入正题。

正文

在Android开发的时候,多少会有一些需求,需要我们去定制控件的触碰事件,也就是传说中的setOnTouchListener。除了监听按下抬起做相应的联动外,更变态的就是让我们去根据按下以及抬起的坐标去做一些操作,最简单的实例就是一个画笔工具,需要根据用户手指移动的轨迹绘制线条,这就需要在用户手指移动的过程中实时获取横纵坐标,并作出对应的绘制。

而他们俩的区别,其实也很简单

getX是以组件左上角为坐标原点,获取X坐标轴上的值。
getRawX是以屏幕左上角为左脚做预案,获取X坐标轴上的值。

很显然,如果为了实现上面说的画笔工具,那么就需要获取getX的值与getY的值,因为这组横纵坐标是依据对应的组件,也就是我们的画板的。

至于什么时候能够使用到getRawX,那我们就再举个例子,当你想要做一个悬浮按钮的时候,需要悬浮按钮根据你手指在屏幕上的滑动而随着移动,这个时候如果使用getX就没有办法了,因为我们无法知道它在整个屏幕中的位置。当然,这也就能说得通,为什么很多软件做成,移动悬浮窗时,悬浮窗会根据偏向左半屏还是右半屏,自行跑到对应的边缘处。这就是因为你通过getRawX得到了它相对于屏幕的位置,根据屏幕宽度自然知道是在左半屏还是有半屏了。然后将对应的控件的横坐标做出调整就可以实现对应的效果了。

你可能感兴趣的:(Android知识点(转)——触碰事件监听中横纵坐标的获取方法:getX和getRawX的区别)