欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android滑動事件沖突詳解(一)

 更新時間:2020年04月08日 16:38:15   作者:Vonnie_Jade  
這篇文章主要為大家詳細介紹了Android滑動事件沖突,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

首先,我們假設這樣一個場景:一個ViewPager里面嵌套一個ViewPager,內部滑動方向和外部滑動方向一樣時,該怎么解決這一沖突呢?

針對滑動沖突這里給出兩種解決方案:外部攔截法,內部攔截法。

外部攔截法

外部攔截法是指點擊事件都先經(jīng)過父容器的攔截處理,如果父容器需要此攔截事件,就攔截,不需要就不攔截,這種方法比較符合點擊事件的分發(fā)機制。這種方法代碼如下:

@Override
 public boolean onInterceptTouchEvent(MotionEvent ev) {

  ...
  boolean intercepted=false;
  switch (action) {
   case MotionEvent.ACTION_MOVE:
    intercepted=false;
    break;
   case MotionEvent.ACTION_MOVE:
    if(父容器需要處理此事件)
     intercepted=true;
    else
     intercepted=false;
    break;
   case MotionEvent.ACTION_UP: {
    intercepted=false;
    break;
  }

  ...
  return intercepted;
 }

上述代碼是外部攔截的典型邏輯,只需要重寫onInterceptTouchEvent()方法,修改父容器當前需要的事件即可。 

內部攔截法

內部攔截法是指:父容器不攔截任何事件,所有事件都傳遞給子元素,如果子元素需要此事件就直接消耗掉,否則就交由父容器處理。這種方法與Android中的事件分發(fā)機制不一致,需要配合 requestDisallowInterceptTouchEvent()方法才能正常工作。我們需要重寫子元素的,代碼如下:

public boolean dispatchTouchEvent(MotionEvent event) {
  ...

  switch (action) {
   case MotionEvent.ACTION_MOVE:
      getParent().requestDisallowInterceptTouchEvent(true);

    break;
   case MotionEvent.ACTION_MOVE:
    if(子元素需要處理此事件)
       getParent().requestDisallowInterceptTouchEvent(true);

    break;
   case MotionEvent.ACTION_UP: {
    break;
  }
  ...
  return super.dispatchTouchEvent(event);
;
 }

當然,還需要修改父容器的onInterceptTouchEvent()方法,代碼如下:

@Override
 public boolean onInterceptTouchEvent(MotionEvent ev) {

   int action=ev.getAction();
   if(action==MotionEvent.ACTION_DOWN){
    return false;
   }else {
    return true;
   }
  }

更多關于滑動功能的文章,請點擊專題: 《Android滑動功能》

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android自定義可左右滑動和點擊的折線圖

    Android自定義可左右滑動和點擊的折線圖

    這篇文章主要為大家詳細介紹了Android自定義可左右滑動和點擊的折線圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Android 1.5 1.6 2.0 2.1 2.2 的區(qū)別詳解

    Android 1.5 1.6 2.0 2.1 2.2 的區(qū)別詳解

    本篇文章是對Android 1.5 1.6 2.0 2.1 2.2 版本之間的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Kotlin by關鍵字作用及使用介紹

    Kotlin by關鍵字作用及使用介紹

    Kotlin 中的 by 關鍵字在 Java 中是沒有的,這使我對它感到非常陌生。Kotlin 中為什么要新增 by 關鍵字呢?by 關鍵字在 Kotlin 中是如何使用的?本文會介紹 by 關鍵字的使用分類,具體的示例,Kotlin 內置的 by 使用,希望能夠幫助到大家
    2022-10-10
  • Android 使用Vibrator服務實現(xiàn)點擊按鈕帶有震動效果

    Android 使用Vibrator服務實現(xiàn)點擊按鈕帶有震動效果

    這篇文章主要介紹了Android 使用Vibrator服務實現(xiàn)點擊按鈕帶有震動效果,,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習火鍋工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Android中Textview超鏈接實現(xiàn)方式

    Android中Textview超鏈接實現(xiàn)方式

    TextView中的超鏈接可以通過幾種方式實現(xiàn):1.Html.fromHtml,2.Spannable,3.Linkify.addLinks。下面分別進行測試,包括修改字體樣式,下劃線樣式,點擊事件等,需要的朋友可以參考下
    2016-02-02
  • Jetpack Compose 雙指拖拽實現(xiàn)詳解

    Jetpack Compose 雙指拖拽實現(xiàn)詳解

    這篇文章主要為大家介紹了Jetpack Compose 雙指拖拽實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Android  ADB詳細介紹及用法

    Android ADB詳細介紹及用法

    本文主要介紹Android ADB,這里整理了Android ADB的文檔資料,詳細介紹了adb 命令,有需要的小伙伴可以參考下
    2016-08-08
  • Android編程操作嵌入式關系型SQLite數(shù)據(jù)庫實例詳解

    Android編程操作嵌入式關系型SQLite數(shù)據(jù)庫實例詳解

    這篇文章主要介紹了Android編程操作嵌入式關系型SQLite數(shù)據(jù)庫的方法,結合實例形式較為詳細的分析了Android操作SQLite數(shù)據(jù)庫的基本技巧與相關注意事項,需要的朋友可以參考下
    2016-01-01
  • Android Compose自定義TextField實現(xiàn)自定義的輸入框

    Android Compose自定義TextField實現(xiàn)自定義的輸入框

    眾所周知Compose中默認的TextField和OutlineTextField樣式并不能滿足所有的使用場景,所以自定義TextField就成了必備技能。本文將自定義TextField實現(xiàn)自定義的輸入框,感興趣的可以了解一下
    2022-03-03
  • Android編程中activity啟動時出現(xiàn)白屏、黑屏問題的解決方法

    Android編程中activity啟動時出現(xiàn)白屏、黑屏問題的解決方法

    這篇文章主要介紹了Android編程中activity啟動時出現(xiàn)白屏、黑屏問題的解決方法,涉及Android針對activity啟動設置的技巧,需要的朋友可以參考下
    2015-12-12

最新評論