我試圖創建視圖,其中所有其他人將在3個手指被觸摸時執行動作。這些活動都有自己的觸摸和滑動。在每個活動上創建一個線性視圖來執行動作
我已經通過創建一個擴展linearlayout和攔截觸摸的類來實現這種工作。並在xml中添加。
但是,只有當按鈕或視圖這樣的項目是可點擊或可觸摸的表面並且不會成爲可觸摸的表面本身時纔會調用此功能。
在
public class MyCatcher extends LinearLayout {
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
// multitouch!! - touch down
int count = event.getPointerCount(); // Number of 'fingers' in this
if (count > 3) {
doThis(mContext);
}
}
return super.onInterceptTouchEvent(event);
}
以XML
<packagename.MyCatcher
....>
my normal layout
</packagename.MyCatcher>
所以,當是可觸摸的物品被觸摸此代碼工作,但不會成爲自己的觸摸層。
我已經嘗試setontouchlister在構造函數中沒有運氣。
感謝所有幫助
EXTRA:當通過onAttach設置touchlistener我可以讓它趕上接觸,但我不能像正常使用event.getPointerCount()作爲它的返回1. 我擔心這可能會佔用大量的處理?/
當您點擊視圖時,onInterceptTouchEvent是否甚至不會調用一次? – 2013-03-20 15:01:20
不僅如果我點擊一個可觸摸的視圖。像一個按鈕。 – RuAware 2013-03-20 15:05:04
我曾經實現過類似的方法是讓onInterceptTouchEvent返回true。 視圖然後將處理其onTouch事件,並且當視圖不需要觸摸事件時,它將在其子項上調用dispatchTouchEvent(MotionEvent)。 – 2013-03-20 15:12:41