onTouch事件传递机制-创新互联

在触发OnTouch事件时Android的GroupView会调用3个函数:

创新互联公司长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为顺河企业提供专业的成都网站设计、成都做网站顺河网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

    public boolean dispatchTouchEvent(MotionEvent ev)  //用于事件分发

    public boolean onInterceptTouchEvent(MotionEvent ev)  //用于事件的拦截

    public boolean onTouchEvent(MotionEvent ev)  //处理事件

    本文主要讨论ViewGroup类的控件嵌套时事件的触发情况

    对于ViewGroup类的控件,onInterceptTouchEvent()的返回值决定Touch事件是否要向它的子View传递。而onTouchEvent用于接收并处理,返回值决定事件及后续事件是否继续向上传递,是子View向父View传递

    ACTION_DOWN事件会传到某个ViewGroup类的onInterceptTouchEvent.如果返回false,则会向其子ViewGroup的onInterceptTouchEvent传递,如果子View不是ViewGroup类的控件则会传给它的onTouchEvent事件,然后根据返回值来判断是否触发其父view的onTouchEvent事件。

    onInterceptTouchEvent返回true则事件会传给当前控件的onTouchEvent,而不再传给子控件。

    onTouchEvent的返回值决定当前控件是否consume了该事件。ACTION_MOVE或ACTION_UP发生的前提是一定曾发生了ACTION_DOWN,如果你没有消费ACTION_DOWN,那么系统会认为ACTION_DOWN没有发生过,所以ACTION_MOVE或ACTION_UP就不能被捕获。默认返回值都是false.

    onTouch的down事件标志是否为点击事件。false表示为点击事件则会触发click,longClick。up事件标志是否是长按,如果down返回true,则表示不是点击事件,即使up返回false也不会触发longClick。如果down返回false,up返回true,则长按的话会先触发longClick然后是up。短按则会先触发up,一定事件后自动触发onLongClick事件(因为down返回false,up返回true表示事件没结束,也就是一直长按下去,知道触发长按事件,而onClick事件没有触发到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:onTouch事件传递机制-创新互联
标题来源:http://myzitong.com/article/dcdcji.html