<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Android Touch事件

        Android中跟Touch事件有關的事件有三個:
          public boolean dispatchTouchEvent(MotionEvent ev):傳遞Touch事件至target view(可以是自己)。
          public boolean onInterceptTouchEvent(MotionEvent ev):在ViewGroup中定義,用于攔截Touch事件的傳遞。
          public boolean onTouchEvent(MotionEvent event): Touch事件處理函數。

       

        先說下事件傳遞的兩種方式:
          隧道方式:從根元素依次往下傳遞直到最內層子元素或在中間某一元素中由于某一條件停止傳遞。 
          冒泡方式:從最內層子元素依次往外傳遞直到根元素或在中間某一元素中由于某一條件停止傳遞。

       

        Touch事件通過dispatchTouchEvent以隧道方式從上往下傳遞。如果在一個View中執行onTouchEvent時返回true的話,接下來的事件(ACTION_DOWN后的ACTION_UP,及可能在中間包含的若干個ACTION_MOVE,從ACTION_DOWN至ACTION_UP為一個連續事件,這是自己想的,不知道準確否)仍會傳遞到這個View的onTouchEvent,如果返回false的話,接下來的事件就不會再傳遞到這個View,而是執行其Parent View的onTouchEvent,每當一個View的onTouchEvent事件返回false,接下來的事件(如果還有的話)就會止步于這個View的Parent View,每次上升一個層次,類似于冒泡方式。

       

        Touch事件傳遞過程中經過的元素都是一個View,但是事件處理的最外層的元素卻不是View,除下跟Window有關的事件,當一個Touch事件發生的時候,會首先調用當前Activity的dispatchTouchEvent函數,然后才將事件傳遞至下層的View元素。當dispatchTouchEvent經過一個View往下傳遞的時候,如果這個View是一個ViewGroup,會調用其onInterceptTouchEvent函數,這個函數表示是否攔截Touch事件,如果這個函數返回true,表示這個ViewGroup攔截了事件的傳遞,Touch事件不會再往下傳遞給它的子View,而是由它處理,所以會調用它的onTouchEvent函數,如果在傳遞的過程中沒有ViewGroup攔截事件,即經過的所有ViewGroup都返回false,那么事件最終會傳遞至最內層的View,一般是一個Widget,當然也可以是一ViewGroup(其內部不包含任何元素),如果最后事件傳遞到一View(非ViewGroup),那么會首先調用這個View的onTouchListener(如果設置了的話),如果onTouchListener返回false則繼續調用View的onTouchEvent(默認返回true),如果最后事件傳遞到一ViewGroup(無子View),會調用它的onTouchEvent函數,默認返回false。


        如果調用一個View的onTouchEvent函數時返回true的話,那么接下來的Touch Event事件(ACTION_DOWN后的ACTION_UP,及可能在中間包含的若干個ACTION_MOVE,從ACTION_DOWN至ACTION_UP為一個連續事件,這是自己想的,不知道準確否)仍會傳遞到這個View并調用它的onTouchEvent函數,在onTouchEvent函數中可以根據條件返回不同的值,如果某一次在此函數中返回了false那么接下來的Touch Event事件就不會再傳遞到這個View,而會在其Parent View終止,調用其Parent View的onTouchEvent。如果所有的View都的onTouchEvent函數都返回false,那么接下來的Touch Event事件會由Activity處理,即調用Activity的onTouchEvent函數。

       

        當調用ViewGroup的dispatchTouchEvent函數時,會首先調用onInterceptTouchEvent函數判斷有沒有攔截事件,如果沒有攔截(返回false),則會依次調用這個ViewGroup的所有子View的dispatchTouchEvent函數。比如一個FrameLayout上層疊了三個ViewGroup,那么在這個FrameLayout的dispatchTouchEvent中會依次調用這三個ViewGroup的dispatchTouchEvent函數,而在這三個ViewGroup的dispatchTouchEvent中也會依次調用他們的子View的dispatchTouchEvent函數,直到其中一個View的dispatchTouchEvent返回true,表示已經處理了這個Touch事件,不需要再調用這個View的Slibling Views。比如調用這三個層疊的ViewGroup的dispatchTouchEvent函數時,如果第一個ViewGroup的dispatchTouchEvent函數就返回了true(已經消耗掉了這個事件),那么其他兩個ViewGroup的dispatchTouchEvent就不會再被調用。可以自定義一個ViewGroup的子類并重載他的dispatchTouchEvent函數,使其處理過Touch事件后仍返回false,那么就還會調用其他兄弟View的dispatchTouchEvent函數。

      posted @ 2012-02-23 15:06  AngelDevil  閱讀(3968)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 开心五月深深爱天天天操| 好男人日本社区www| 国产老熟女乱子一区二区| 中文字幕在线永久免费视频| 精品人妻一区二区三区蜜臀| 蜜臀av黑人亚洲精品| 高清中文字幕一区二区| 97久久人人超碰国产精品| 久久国产乱子伦免费精品| 欧美午夜精品久久久久久浪潮| 亚洲老熟女一区二区三区| 北岛玲亚洲一区二区三区| 国产v亚洲v天堂a无码99 | 视频一本大道香蕉久在线播放| 精品人妻一区二区三区四区在线| 免费观看日本污污ww网站69| 国产69久久精品成人看| 国产精品久久香蕉免费播放| 最新中文字幕av无码专区不| 国产精品系列在线免费看| 亚洲WWW永久成人网站| 国产日产精品系列| 性猛交ⅹxxx富婆视频| 一级做a爰片在线播放| A级毛片免费完整视频| 久久久久久综合网天天| 午夜爽爽爽男女免费观看影院| 亚洲人成电影网站 久久影视| 国产精品小视频一区二页| 少妇仑乱a毛片无码| 亚洲欧美在线一区中文字幕| 亚洲无人区视频在线观看| 狠狠v日韩v欧美v| 97成人碰碰久久人人超级碰oo| 国产一区二区三区内射高清| 亚洲国产成人久久77| 国产午夜亚洲精品一区| 精品不卡一区二区三区| 久久精品国产亚洲综合av| 女同另类激情在线三区| 久久亚洲精品中文字幕无|