最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

外部攔截法

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

@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()方法,修改父容器當(dāng)前需要的事件即可。 

內(nèi)部攔截法

內(nèi)部攔截法是指:父容器不攔截任何事件,所有事件都傳遞給子元素,如果子元素需要此事件就直接消耗掉,否則就交由父容器處理。這種方法與Android中的事件分發(fā)機(jī)制不一致,需要配合 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);
;
 }

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

@Override
 public boolean onInterceptTouchEvent(MotionEvent ev) {

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

阜南县| 金华市| 黎城县| 肇庆市| 陆良县| 张家口市| 兖州市| 元阳县| 多伦县| 含山县| 乌拉特后旗| 和顺县| 北票市| 西盟| 河间市| 侯马市| 囊谦县| 曲松县| 万源市| 营山县| 黎川县| 溧水县| 科技| 策勒县| 偃师市| 赤城县| 合山市| 阿尔山市| 高雄县| 凯里市| 温州市| 和硕县| 莱西市| 文成县| 陆川县| 承德市| 汤阴县| 屏边| 河池市| 乌什县| 长春市|