<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ***** **事件分發概述** [TOC=6] # 1. 什么是事件分發(事件分發的本質) ## 1.1 事件分發的對象是誰? **答:事件** * 當用戶觸摸屏幕時(View或ViewGroup派生的控件),將產生點擊事件(Touch事件)。 > Touch事件相關細節(發生觸摸的位置、時間、歷史記錄、手勢動作等)被封裝成MotionEvent對象 * 主要發生的Touch事件有如下四種: * MotionEvent.ACTION\_DOWN:按下View(所有事件的開始) * MotionEvent.ACTION\_MOVE:滑動View * MotionEvent.ACTION\_CANCEL:非人為原因結束本次事件 * MotionEvent.ACTION\_UP:抬起View(與DOWN對應) * 事件列:從手指接觸屏幕至手指離開屏幕,這個過程產生的一系列事件 任何事件列都是以DOWN事件開始,UP事件結束,中間有無數的MOVE事件,如下圖: ![](https://box.kancloud.cn/c9151879d38153bc06a57e86275c70e0_990x180.png) 即當一個MotionEvent 產生后,系統需要把這個事件傳遞給一個具體的 View 去處理。 ## 1.2 事件分發的本質 **答:將點擊事件(MotionEvent)向某個View進行傳遞并最終得到處理** > 即當一個點擊事件發生后,系統需要將這個事件傳遞給一個具體的View去處理。**這個事件傳遞的過程就是分發過程。** ## 1.3 事件在哪些對象之間進行傳遞? **答:Activity、ViewGroup、View** > 一個點擊事件產生后,傳遞順序是:Activity(Window) -> ViewGroup -> View * Android的UI界面是由Activity、ViewGroup、View及其派生類組合而成的 ![](https://box.kancloud.cn/a70803c24a100f1551856570aa4e672f_256x409.png) * UI界面 * View是所有UI組件的基類 > 一般Button、ImageView、TextView等控件都是繼承父類View * ViewGroup是容納UI組件的容器,即一組View的集合(包含很多子View和子VewGroup), > 1. 其本身也是從View派生的,即ViewGroup是View的子類 > 2. 是Android所有布局的父類或間接父類:項目用到的布局(LinearLayout、RelativeLayout等),都繼承自ViewGroup,即屬于ViewGroup子類。 > 3. 與普通View的區別:ViewGroup實際上也是一個View,只不過比起View,它多了可以包含子View和定義布局參數的功能。 ## 1.4 事件分發過程由哪些方法協作完成? **答:dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()** ![](https://box.kancloud.cn/871dbc64f428b71bac838c4094a9f6bf_653x319.png) ## 1.5 總結 * Android事件分發機制的本質是要解決:**點擊事件由哪個對象發出,經過哪些對象,最終達到哪個對象并最終得到處理。** > 這里的對象是指Activity、ViewGroup、View * Android中事件分發順序:**Activity(Window) -> ViewGroup -> View** * 事件分發過程由dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()三個方法協助完成 # 2. 為什么要有事件分發 解決一些沖突 如: 1. ScrollView簽到ListView或GridView滑動沖突解決方案 2. ViewPager嵌套ViewPager滑動沖突解決方案
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看