您的位置:首页 > 移动开发 > Android开发

Android Touch 触摸事件

2012-04-23 18:23 274 查看
       在项目中遇到了ScrollView 与内部的Gallery Touch事件的问题,学习了网上大侠们的研究成果,以及Android官网的文档,根据个人理解在此做个学习记录,也希望对大家有所帮助。

一、Android Touch事件的传递机制

        从外层的View依次向内层的子View分发传递,直至某个子View处理了Touch事件(即该子View的onTouchEvent方法做出相应处理,并返回true),否则到最内层的子View之后,再冒泡向上返回当前View对Touche事件处理的结果(即View的onTouchEvent返回的布尔值)。

二、Android Touch事件三个方法

       1)public  boolean  dispatchTouchEvent(MotionEvent ev)     向下层的目标View传递(分发)触摸事件,如果当前View为目标View则传递给当前View

             返回值:true   表示当前的View分发处理Touch事件,首先接收到了down,以及后续的up等,此时可以将完整的down、up传递给子View或者当前View。

                           false  当前View没有分发处理Touch事件,其子View也不能处理Touch事件。

       2)public  boolean  onInterceptTouchEvent(MotionEvent
ev)   截获所有的Touch事件

            返回值:true  该事件被当前View截获处理,此方法将不再接收到后续的Touch事件,所有的后续事件将在当前View的onTouchEvent中处理,事件的目标View仍能接收到相同的Touch事件,但该事件的Action为ACTION_CANCEL

                          false   所有的Touch将会首先传递到此方法,然后传递到该Touch事件的目标View的onTouchEvent中。

      3)public   boolean 
onTouchEvent(MotionEvent event)   处理Touch事件。

          
返回值:true
表示Touch事件被当前View处理了,父View收到当前View返回的true时认为该Touchu事件已经被处理。

                         false 表示Touchu事件没有被处理,将向上传递给父View进行处理。

三、Android Touch事件流程

      
在Android2.2下,无论dispatchTouchEvent返回true和false都会调用onInterceptTouchEvent方法,这和网上讨论的说法有所不同,没有验证是否是版本问题。同时,dispatchTouchEvent返回false时View只能接收到down事件,后续事件不能再接收到,无法调用onTouchEvent。

      


    

                        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android action 文档 up
相关文章推荐