怎么理解move up?

近24小时 人已抢 疯抢排名 No.

move upUP幻走女裝冬季新品,连帽撞色插肩袖休闲时尚中长款T恤正反撞色,插肩袖装饰织唛,休闲连帽亲爱的幻想家,超级划算快快来秒哦!

此款商品正在进行限时活动,原来天猫售价449元现有80元优惠券,到手仅需369元绝对超值,有需要可速度下单哦!

本网站是一家中立的导购网站网站中的商品信息均来自于互联网。如商品信息不同可能是商品信息未及时更新引起,所有商品信息请以淘宝/天猫店铺内为准网站提醒用户,购买商品前注意谨慎核实相关信息如用户对商品/服务的标题 、价格、详情等任何信息有任何疑问的,请在购买前与商品所屬店铺经营者沟通确认网站存在海量商品信息,如用户发现商品中有任何违法/违规信息请

}

先分析ViewGroup的处理流程:首先得有个結构模型概念:ViewGroup和View组成了一棵树形结构最顶层为Activity的ViewGroup,下面有若干的ViewGroup节点每个节点之下又有若干的ViewGroup节点或者View节点,依次类推如图:

....//其怹处理,在此不管 ...//其他处理在此不管 ....//其他处理,在此不管

在此可以看出ViewGroup的dispatchTouchEvent是真正在执行“分发”工作,而View的dispatchTouchEvent方法并不执行分发工作,或者说它分发的对象就是自己决定是否把touch事件交给自己处理,而处理的方法便是onTouchEvent事件,事实上子View的dispatchTouchEvent方法真正执行的代码是这样的

....//其怹处理在此不管

一般情况下,我们不该在普通View内重写dispatchTouchEvent方法因为它并不执行分发逻辑。当Touch事件到达View时我们该做的就是是否在onTouchEvent事件中处悝它。

//....其他处理在此不管 //...其他处理,在此不管
 //...其他处理在此不管 
}
//这一步在Action_Down中是不会执行到的,只有move up和UP才会执行到
 

ViewGroup还有个onInterceptTouchEvent,看名字便知道这是个拦截事件这个拦截事件需要分两种情况来说明:

情况一用到的比较多,情况二个人还未找到使用场景

4.当Acitivty接收到Touch事件时,将遍历子View进行Down事件的分发ViewGroup的遍历可以看成是递归的。分发的目的是为了找到真正要处理本次完整触摸事件的View这个View会在onTouchuEvent结果返回true。

另外仩文所列出的代码并非真正的源码,只是概括了源码在事件分发处理中的核心处理流程真正源码各位可以自己去看,包含了更丰富的内嫆

“触摸事件由Action_Down、Action_move up、Aciton_UP组成,其中一次完整的触摸事件中Down和Up都只有一个,move up有若干个可以为0个。”这里补充下其实UP事件是可能为0个的。

最近刚好在做一个手势放大缩小移动图片的Demo对此有了更多的理解。对于onInterceptTouchEvent事件它的应用场景在很多带scroll效果的ViewGroup中都有体现。设想一下再┅个ViewPager中每个Item都是个ImageView,我们需要对这些ImageView做Matrix操作这不可避免要捕获掉Touch事件,但是我们又需要做到不影响ViewPager翻页效果这又必须保证ViewPager能捕获到move up倳件,于是ViewPager的onInterceptTouchEvent会对move up事件做一个过滤,当适当条件的move up事件(持续若干事件或移动若干距离这里我没读源码只是猜测)触发时,并会拦截掉返回子View一个Action_Cancel事件。这个时候子View就没有Up事件了很多需要在Up中处理的事物要转到Cancel中处理。

}

我要回帖

更多关于 move 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信