上面是三個viewpager相互巢狀,這麼就需要對滑動事件進行處理
/**
* 重寫ontouchevent事件,什麼都不用做,不能滑動
*/
@override
public
boolean
ontouchevent
(motionevent
arg0
)
接下來2使用自定義viewpager,在第乙個頁面的時候讓父控制項攔截,即顯示出側邊欄,但是3的話是不攔截,讓側邊欄不顯示出來,這樣的話就相互矛盾了,到底是攔截還是不攔截了?// 表示事件是否攔截, 返回false表示不攔截, 可以讓巢狀在內部的viewpager相應左右劃的事件
@override
public
boolean
onintercepttouchevent
(motionevent
arg0
)
/**
* 11個子頁籤水平滑動的viewpager, 暫時不用
*
* @author kevin
*
*/
public
class
horizontalviewpager
extends
viewpager
public
horizontalviewpager
(context
context
)
/**
* 事件分發, 請求父控制項及祖宗控制項是否攔截事件
所以不能按上面的第二步這樣寫,我們既想北京出來,又不想讓北京出來
修改:選單詳情頁-新聞(viewpager1),以前是通過horizontalviewpager
來控制,而上面的那個類也不能那樣寫了,看最後乙個
// mviewpager.setonpagechangelistener(this);//注意:當viewpager和indicator繫結時,
// 滑動監聽需要設定給indicator而不是viewpager
mindicator
.setonpagechangelistener
(this
);
@override
public
void
onpageselected
(int
arg0
)else
}
/**
* 事件分發, 請求父控制項及祖宗控制項不要攔截事件
*/
@override
public
boolean
dispatchtouchevent
(motioneventev)
motionevent中getx()和getrawx()的區別/**
* 頭條新聞的viewpager
*/
public
class
topnewsviewpager
extends
viewpager
public
topnewsviewpager
(context
context
)
/**
* 事件分發, 請求父控制項及祖宗控制項是否攔截事件 1. 右劃, 而且是第乙個頁面, 需要父控制項(mainactivity)攔截,選單就出來了 2. 左劃, 而且是最後乙個頁面, 需要父控制項(viewpager2)攔截,會滑動2的下乙個頁面
* 3. 上下滑動, 需要父控制項攔截
*/
@override
public
boolean
dispatchtouchevent
(motioneventev)
}else
}
}else
break
;
default
:
break
;
}
return
super
.dispatchtouchevent(ev
);
}
}
getx是獲取以widget左上角為座標原點計算的x軸座標直.
getrawx 獲取的是以螢幕左上角為座標原點計算的x軸座標直.
當你觸到按鈕時,x,y是相對於該按鈕左上點的相對位置。而rawx,rawy始終是相對於螢幕的位置。
來自為知筆記(wiz)
關於滑動事件
我寫了手機滑動的兩個方法 乙個是向上滑動,乙個是向下滑動 向上滾動 function slideups obj 滑動事件 objs.addeventlistener touchmove function e 滑動結束時判斷向上滑動還是向下滑動 objs.addeventlistener touche...
View的事件體系三 滑動衝突處理
內外滑動方向一致。內外兩層同時能上下滑動,或同時能左右滑動。前面兩種情況的巢狀。如果abs x abs y 認定為上下滑動 x 或 y為正,則滑動方向為右或下 x 或 y為負,則滑動方向為左或上 針對場景2的情況,無法根據滑動向量或速度向量來做判斷。此時只能通過介面內容所呈現的業務來做判斷 比場景2...
android觸控螢幕事件手勢操作滑動處理
在android系統中,手勢的識別是通過 ongesturelistener介面來實現的,利用,摸屏的fling scroll等方法可以進行滑動或翻頁效果的實現 觸控螢幕相關的事件,是通過ontouchlistener來實現的。我們可以通過motionevent的getaction 方法來獲取tou...