老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Android中點擊事件分發機制的原理分析

這篇文章主要介紹了Android中點擊事件分發機制的原理分析的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Android中點擊事件分發機制的原理分析文章都會有所收獲,下面我們一起來看看吧。

公司主營業務:成都網站建設、網站建設、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。成都創新互聯是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創新互聯推出武城免費做網站回饋大家。

搭建最簡單的結構

新建Activity,重寫dispatchTouchEvent和onTouchEvent,前面的方法負責點擊事件的分發,后面的方法負責點擊事件的消耗,然后打印三種觸摸事件的觸發

private static final String TAG = MainActivity.class.getSimpleName();
@Override
  public boolean onTouchEvent(MotionEvent event) {
    int action = event.getAction();
    switch (action) {
      case MotionEvent.ACTION_DOWN:
        Log.d(TAG, "Activity onTouchEvent ACTION_DOWN");//按下
        break;
      case MotionEvent.ACTION_MOVE:
        Log.d(TAG, "Activity onTouchEvent ACTION_MOVE");//移動
        break;
      case MotionEvent.ACTION_UP:
        Log.d(TAG, "Activity onTouchEvent ACTION_UP");//抬起
        break;
    }
    return super.onTouchEvent(event);
  }
@Override
  public boolean dispatchTouchEvent(MotionEvent ev) {
    int action = ev.getAction();
    switch (action) {
      case MotionEvent.ACTION_DOWN:
        Log.d(TAG, "Activity dispatchTouchEvent ACTION_DOWN");
        break;
      case MotionEvent.ACTION_MOVE:
        Log.d(TAG, "Activity dispatchTouchEvent ACTION_MOVE");
        break;
      case MotionEvent.ACTION_UP:
        Log.d(TAG, "Activity dispatchTouchEvent ACTION_UP");
        break;
    }
    return super.dispatchTouchEvent(ev);
  }

新建一個類繼承自LinearLayout,同樣也重寫dispatchTouchEvent和onTouchEvent,還有因為LinearLayout繼承自ViewGroup,ViewGroup是可以攔截點擊事件的,這個很好理解,因為控件都是放在他里面的嘛。所以還要重寫onInterceptTouchEvent方法

@Override
  public boolean onInterceptTouchEvent(MotionEvent ev) {
    int action = ev.getAction();
    switch (action) {
      case MotionEvent.ACTION_DOWN:
        Log.d(TAG, "onInterceptTouchEvent ACTION_DOWN");
        break;
      case MotionEvent.ACTION_MOVE:
        Log.d(TAG, "onInterceptTouchEvent ACTION_MOVE");
        break;
      case MotionEvent.ACTION_UP:
        Log.d(TAG, "onInterceptTouchEvent ACTION_UP");
        break;
      default:
        break;
    }
    return false;
  }

(這里有個重點).

這里有個需要注意的地方就是Android的控件有些是默認可以點擊的(如Button),還有一些是默認不可點擊的(如TextView)他們的分發是有一些不同的,這里我們先看不可點擊的,新建一個類繼承android.support.v7.widget.AppCompatTextView,兼容的TextView,同時跟Activity一樣重寫dispatchTouchEvent和onTouchEvent,代碼不貼了,跟上面一樣,它是普通控件,沒有攔截的方法。

開始點擊,移動手指后抬起

然后來點一點屏幕上的控件看看打印的log,dispatchTouchEvent和onTouchEvent都返回默認的實現super,onInterceptTouchEvent默認返回false,表示不攔截,默認的情況打印:

1.--------------------------------------
D/MainActivity: Activity dispatchTouchEvent ACTION_DOWN
D/MyLayout: dispatchTouchEvent ACTION_DOWN
D/MyLayout: onInterceptTouchEvent ACTION_DOWN
D/MyTextView: dispatchTouchEvent ACTION_DOWN
2.--------------------------------------
D/MyTextView: onTouchEvent ACTION_DOWN
D/MyLayout: onTouchEvent ACTION_DOWN
D/MainActivity: Activity onTouchEvent ACTION_DOWN
3.--------------------------------------
D/MainActivity: Activity dispatchTouchEvent ACTION_MOVE
D/MainActivity: Activity onTouchEvent ACTION_MOVE
D/MainActivity: Activity dispatchTouchEvent ACTION_MOVE
D/MainActivity: Activity onTouchEvent ACTION_MOVE
D/MainActivity: Activity dispatchTouchEvent ACTION_UP
D/MainActivity: Activity onTouchEvent ACTION_UP

這是默認的情況,把它分為三個階段:

1. 事件的分發,從上到下,從Activity到Layout到Text的dispatchTouchEvent結束

2. 事件的消耗,從下到上,從Text到Layout到Activity的onTouchEvent結束

3. 這套動作的后續事件交給上個事件的最后消耗者,不經過其他控件的分發

三個函數的其他返回值

dispatchTouchEvent和onTouchEvent都有三種返回情況
- true
- false
- super.dispatchTouchEvent(ev)和super.onTouchEvent(event)

onInterceptTouchEvent有兩種返回,true和false,這樣來看, 組合起來真是情況太多了,寫下來挨個分析看代碼的話怕是要看暈,所以這里用一張圖來看看所有的情況:

普通不可點擊View的事件分發流程

Android中點擊事件分發機制的原理分析

默認可點擊控件的事件分發

比如Button這種默認可以點擊的控件,或者設置android:clickable=”true”的控件,在分發流程中有一些不同,主要是onTouchEvent的默認方法不同,它直接消耗點擊事件,不再往上傳遞。

可點擊View的事件分發流程

Android中點擊事件分發機制的原理分析

關于“Android中點擊事件分發機制的原理分析”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Android中點擊事件分發機制的原理分析”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道。


文章名稱:Android中點擊事件分發機制的原理分析
轉載來源:http://www.xueling.net.cn/article/gijjso.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 成人性生交A片免费看潘金莲 | 久草在线播放视频 | 放荡开放的人妻穿丁字裤凹 | 日本高清在线播放 | 精品国产一区二区三区蜜殿 | 亚洲国产福利成人一区二区 | 黄飞鸿对黄飞鸿 | 久久久免费在线观看 | 亚洲AV无码精品久久久久成精品 | 欧美日韩一卡 | 日本一二三高清 | 凸输偷窥xxxx自由免费视频 | 亚洲欧美国产一区二区三区 | 极品少妇XXXX | 亚洲日韩高清aⅴ在线观看 四区在线观看 | 又色又爽又黄又硬的视频免费观看 | 美女视频黄的免费 | 动漫AV永久无码精品每日更新 | 欧美色综合天天久久综合精品 | 91素人| 免费av资源在线观看 | 精品无码久久午夜福利 | 乱子伦xxxxvideos | 久久久久亚洲av成人片仓井空 | 国产免费爽爽视频在线观看 | 亚洲一区二区精品视频 | 未满小14洗澡无码视频网站 | 日韩9999| 欧美黑人巨大久久久精品一区 | 国产在线高清精品 | 国产熟女精品视频国语 | 奶头和荫蒂添的好舒服囗交 | 亚洲Av纯肉无码精品动漫 | 人妻大胸奶水2 | 亚洲精品成人福利网站 | 91精品国产成人 | 青青操综合网 | 夜夜躁狠狠躁日日躁2022 | 好爽别插了无码视频 | 日韩亚洲欧美在线观看 | 日本成人激情 |