亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • activity事件分發流程


    662386230001eef809600540.jpg
    查看全部
  • view的事件分發流程


    662384030001cd2109600540.jpg
    查看全部
  • Activity 事件分發

    https://img1.sycdn.imooc.com/652c50d10001a25024701304.jpg

    查看全部
    1. Activity 負責生命周期和處理事件。

    2. Window負責視圖的控制。

    3. 一個Activity包含了一個Window, 一個Window才真正代表了一個窗口。

    4. Window包含了一個頂級的View -> DecorView

    5. Activity中setContentView的視圖就是DecorView的子元素。

    6. 所有的事件都要經過DecorView才會傳遞給我們的View。

    7. 傳遞層級:Activity->Window->DecorView->ViewGroup->View

    8. 事件傳遞的三個主要對象:Activity、ViewGroup、View

    查看全部
    1. 事件序列:從手指按下屏幕開始,到手指離開屏幕所產生的一系列事件。

    2. 傳遞層級:Activity->Window->DecorView->ViewGroup->View

    查看全部
  • View 事件傳遞

    62bfabd500010f9b07200404.jpg
    查看全部
  • 熟記流程圖、翻看源碼

    查看全部
    0 采集 收起 來源:總結

    2022-05-03

  • 事件默認傳遞流程和在同一事件序列中的變化

    查看全部
  • 分別創建了MyActivity extends Activity,MyViewGroup extends FrameLayout,MyView extends View

    然后分別重寫他們需要的方法dispatchTouchEvent、onTouchEvent,特別的是在ViewGroup中多重寫一個onInterceptTouchEvent

    根據流程圖,可以發現

    • 傳遞順序Activity-ViewGroup-View

    • 由上自下的dispatvhTouchEventh互相傳遞后,到由下而上的onTouchEvent互相傳遞

    查看全部
  • 以上進入分發的過程。判斷是否符合安全策略。符合安全策略-繼續,是鼠標-結束不分發,

    注冊了touchListener方法,里面的onTouch方法返回true標志著事件被消費了。

    查看全部
  • 如果不是取消事件并且沒有被分發,繼續分發處理。

    當前動作是按下、移動時,首先清空之前所有的觸摸點信息。然后獲取到可以接收的子view的集合

    從前到后遍歷子view,嘗試找到真正點擊的view。

    用戶沒有定義了view的繪制順序,返回當前下標。

    定義了的話,通過getChildDrawingOrder獲取View的下標,需要重寫這個方法。

    所以一般返回i。

    在view列表中拿出view,否則在children中拿出。

    查看全部
  • *** 看庫或框架的源碼時,需要的是捋清楚代碼的思路,理解核心思想,而不是明白其中每一行代碼的實現。



    接下來判斷onInterceptTouchEvent方法的值

    發現一般情況下這個方法都會返回false,因為點擊來源!=鼠標等等。

    查看全部
  • 第一個判斷:這個值在View中可以找到,是個檢測用的對象

    第二個判斷:提供的輔助功能的選項,幫助有障礙的用戶的使用,不影響方法調用

    接下來正式進入事件分發的邏輯代碼中

    判斷安全策略,

    查看全部
  • * dispatchTouchEvent? 標志著事件進入到了ViewGroup里面。首先被調用到。

    * onInterceptTouchEvent? 在過程中被調用。true=當前ViewGroup消費掉。false=傳遞下去。

    * onTouchEvent? ViewGroup沒有onTouchEvent方法的實現,他是在View中實現的。

    應用場景:希望事件進行到ViewGroup終止,不傳輸到子View中,用戶的觸摸事件自行處理。

    處理:重寫onInterceptTouchEvent并返回true,同時重寫onTouchEvent方法,在其中編寫事件處理邏輯即可。


    查看全部
  • 事件未被消費,當前視圖都沒能處理掉這個事件,才會去調用Activity的onTouchEvent方法,且他的返回值作為dispathchEvent的返回值。


    查看Activity中onTouchEvent方法的實現邏輯,發現其中一個的判斷邏輯很重要,如果返回為true則會關閉當前界面且返回true。


    查看Window中shouldCloseOnTouch方法,當這三個bolean值均為true時返回true。


    * mCloseOnTouchOutside=true這個值表示當前Activity支持點擊空白區域讓acitvity消失。這個變量一般在downLoad的時候這個值才為true。

    * peekDecorView的實現在PhoneWindow,返回的是當前的dectorView。

    * isOutside =true 表示當前觸摸的點擊事件是在頂層View DoctorView之外的,沒有點擊到DoctorView里面。


    Activity整體傳遞流程比較線性,如果還是不清楚可以再回看源碼及流程圖消化吸收。

    查看全部
  • 查看源碼,dispatchTouchEvent方法時發現:

    1、當action是按下的時候(也就是當事件剛開始的時候)會調用onUserInteraction方法,而內部并無具體實現——所以在事件剛開始時可以實現這個方法用于監聽事件開始。

    2、當獲取上層view的superDispatchTouchEvent方法返回是true的時候就消費掉這個事件,否則就傳給onTouchEvent處理。(符合上一節說的流程)

    3、 Activity+Window+DecorView之間的關系:每個Activity都持有一個window對象,window本身是一個抽象類,有一個唯一的實現PhoneWindow,PhoneWindow持有了一個DecorView的實例,DecorView是Activity最頂層的View,他繼承自FrameLayout。

    4、FrameLayout繼承自ViewGroup,FrameLayout要實現的superDispatchTouchEvent方法在VIewGroup中實現了。

    查看全部

  • Activity中涉及到了兩個方法,返回值均為true/false,根據父類dispathTouchEvent的返回走哪個方法。

    dispatchTouchEvent返回true,事件被消費,事件結束。

    onTouchEvent無論返回true/false,事件都結束。

    查看全部
  • 事件產生的時候會有這些類型,可以想象下手指在屏幕中的活動

    按下-移動-抬起,存在這樣一個固定的規律,移動可以不存在

    安卓中存在的這樣一個基本的層級關系和傳遞層級

    查看全部
  • 事件分發的定義和由來,及他的出現的機制的統籌定義

    查看全部
  • 事件分發流程

    查看全部
  • 事件在Activity的分發

    查看全部
  • 系統把事件封裝為MotionEvent對象,事件分發的過程就是MotionEvent分發的過程。

    事件序列:從手指按下屏幕開始,到手指離開屏幕所產生的一系列事件。

    查看全部
  • 系統把事件封裝為MotionEvent對象,事件分發的過程就是MotionEvent分發的過程。

    事件序列:從手指按下屏幕開始,到手指離開屏幕所產生的一系列事件。

    查看全部
  • 事件分發:用戶通過屏幕與手機交互,每一次點擊、長按、移動等都是一個事件

    事件分發機制:某一個事件從屏幕傳遞各個View,由View來使用這一事件(消費事件)或者忽略這一事件(不消費事件),這整個過程的控制。

    查看全部
  • Activity的事件分發流程圖。

    dispatchtouchEvent(MotionEvent ev) 和 onTouchEvent(MotionEvent ev) 流程圖

    事件什么情況下被消費,什么情況下被傳遞

    ?

    http://img1.sycdn.imooc.com//61691e3b00012f8f09190423.jpg

    查看全部
首頁上一頁1234567下一頁尾頁

舉報

0/150
提交
取消
課程須知
學習此課程,需要有android的基礎知識
老師告訴你能學到什么?
深克理解系統對于事件分發的流程,在今后的工作中加以應用,控制自如,讓哪個控件接收事件,哪個控件屏蔽事件,對應回調哪個方法等,了然于胸

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!