做了个简单测试:

一个一定范围的View,设置其onTouchEvent返回true,表明可以处理Touch事件,

点中该View,然后滑动,滑动出View一段距离再松开,原来以为在刚滑动出View的时候,View会收到ACTION_CANCEL事件(因为滑出了它的响应范围了),

但是其实后面滑出来View以后,ACTION_MOVE/UP还是会被该View处理。

刚开始有点想不通,后来才觉得这样的合理性:

Android其实是把一次 Touch从开始<down>到结束<up> 视作是一个整体的,是一个事务(Transaction), 一旦某个View的onTouchEvent返回了true,就代表着这次事务

就全权由此View来处理,不管后面此事务中的ACTION_MOVE是否已经超过了View的响应范围,这次事务的所有ACTION_XX都由这个View来处理,并且当然这次的事务中

传递的TouchEvent也一直是以该View的左上角作为原点,不会因为滑出去而有什么变化。

这个细节以前还真没注意过,要不是有个需求,是不会测试的,貌似google的guide也没说.




阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: android