中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Android觸摸事件的應用詳解-創新互聯

前言

創新互聯公司是一家專注于成都做網站、成都網站建設與策劃設計,土默特右旗網站建設哪家好?創新互聯公司做網站,專注于網站建設10余年,網設計領域的專業建站公司;建站業務涵蓋:土默特右旗等地區。土默特右旗做網站價格咨詢:028-86922220

上一篇講了Android觸摸事件的傳遞機制,具體可以看這里初識Android觸摸事件傳遞機制。既然知道Android中觸摸事件的傳遞分發,那么它能解決什么樣的問題,在我們實際開發中如何應用,這點很重要,知道原理是為了解決問題而準備的。這篇文章的核心講的如何解決View的滑動沖突,這個問題在日常開發中很常見,比如內部嵌套Fragment視圖是左右滑動,外部用一個ScrollView來包含,可以上下滑動,如果不進行滑動沖突處理的話,就會造成外部滑動方向和內部滑動方向不一致。

目錄

常見的滑動沖突場景
滑動沖突的處理規則
外部攔截法
內部攔截法
小結


常見的滑動沖突場景

常見的滑動沖突場景可以簡單分為以下三種:

場景1:外部滑動方向和內部滑動方向不一致
場景2:外部滑動方向和內部滑動方向一致
場景3:上面兩種情況的嵌套


如圖:

場景1,主要是將ViewPager和Fragment配合使用所組成的頁面滑動效果,主流應用幾乎都會使用這個效果。在這個效果中可以通過左右滑動來切換頁面,而每個頁面內部往往又是一個ListView,所以就造成了滑動沖突,但是在ViewPager內部處理了這種滑動沖突,因此在采用ViewPager時我們就無須關注這個問題,而如果把ViewPager換成ScrollView,那就必須自己手動處理,不然造成的結果就是內外兩層只能一層能夠滑動。

場景2,就復雜一點,當內外兩層都在同一個方向可以滑動的時候,顯然存在邏輯問題。因為當手指開始滑動的時候,系統無法知道用戶到底是想讓哪一層滑動,所以當手指滑動的時候就會出現問題,要么只有一層滑動,要么就是內外兩層都滑動但很卡頓。

場景3,是場景1和場景2兩種情況的嵌套,顯得更復雜了。比如外部有一個SlideMenu效果,內部有一個ViewPager,ViewPager的每一個頁面中又是一個ListView。雖然場景3滑動沖突看起來很復雜,但都是幾個單一的滑動沖突的疊加,因此需要一一拆解開來即可。

滑動沖突的處理規則

一般來說,不管滑動沖突有多么復雜,它都有既定的規則,根據這些規則我們就可以選擇合適的方法去處理。

對于場景1,它的處理規則就是:當用戶左右滑動時,需要讓外部的View攔截點擊事件,當用戶上下滑動,需要讓內部View攔截點擊事件。具體來說就是根據滑動是水平滑動還是豎直滑動來判斷到底是由誰來攔截事件。

如圖:

簡單來說,就是根據水平方向和豎直方向的距離差來判斷,如果是Dx>Dy,那么則是水平滑動,如果是Dy>Dx,那么則是豎直滑動。

場景2,則是比較特殊,它無法根據滑動的角度,距離差以及速度差來做判斷。這個時候就需要從業務上找到突破點,比如,當處于某種狀態時需要外部View響應用戶的滑動,而處于另外一種狀態時需要內部View來響應View的滑動

對于場景3的話,它的滑動規則也更復雜,和場景2一樣,同樣是從業務上找到突破點。

外部攔截法

外部攔截法是指點擊事件都是先經過父容器的攔截處理,如果父容器需要此事件就攔截,如果不需要此事件,就不攔截了,這樣就可以解決滑動沖突的問題,外部攔截法需要重寫父容器的onInterceptTouchEvent方法,在內部做相應的攔截即可,偽代碼如下:

 @Override
 public boolean onInterceptTouchEvent(MotionEvent event) {
 boolean intercepted = false;
 int x = (int) event.getX();
 int y = (int) event.getY();

 switch (event.getAction()) {
 case MotionEvent.ACTION_DOWN: {
  intercepted = false;
  break;
 }
 case MotionEvent.ACTION_MOVE: {
  if (父容器需要點擊當前事件) {
  intercepted = true;
  } else {
  intercepted = false;
  }
  break;
 }
 case MotionEvent.ACTION_UP: {
  intercepted = false;
  break;
 }
 default:
  break;
 }
 mLastXIntercept = x;
 mLastYIntercept = y;

 return intercepted;
 }

網站題目:Android觸摸事件的應用詳解-創新互聯
轉載來于:http://m.2m8n56k.cn/article24/dhpsje.html

成都網站建設公司_創新互聯,為您提供定制網站商城網站、營銷型網站建設、網站改版靜態網站App開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化
主站蜘蛛池模板: 九九国产精品视频 | 国内精品小视频 | 国产精品久久久久久久网站 | 欧美一区二区免费 | 亚洲一区二区三区高清视频 | 日本久久久久久久久久 | 欧美国一级毛片片aa | 毛片免费高清免费 | 国产精品成人免费 | 国产v片在线播放免费观 | 好吊妞998视频免费观看在线 | 亚洲一区成人 | 亚洲一区二区三区免费 | 97久久天天综合色天天综合色 | 99久久99久久久99精品齐 | 久草青青 | 九九热视频在线播放 | 曰韩毛片 | 国产精品永久免费视频观看 | 国产激情视频网站 | 成人欧美视频免费看黄黄 | 国产精品中文字幕在线观看 | 亚洲男女在线 | 国产视频二区在线观看 | fc2久久| 看一级特黄a大一片 | 国产精品成人观看视频网站 | 乱子伦农村xxxx视频 | 久久机热综合久久国产 | 欧美精品aaa久久久影院 | 午夜主播福利视频在线观看 | 小泽玛利亚的一级毛片的 | a毛片在线看片免费 | 久久精品国产亚洲高清 | 国产免费黄色网址 | 成人高清在线观看 | 国产精品毛片在线大全 | 在线播放一区二区精品产 | 中文字幕在线视频网站 | 特黄特色三级在线播放 | 日本久久综合 |