Android Touch Event 超出范围

做了个简单测试:

一个一定范围的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也没说.



发布了426 篇原创文章 · 获赞 48 · 访问量 64万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览