適當的方式可能是由onInterceptTouchEvent返回true攔截只是想攔截事件,僅在需要時。
但是如果你想與黑暗的一面走,有一個骯髒的選擇,可能會引誘你,你可能會後悔:攔截所有的事件,然後如果需要的話把它們傳遞下去。
例如有你的觀點有點像
public boolean canInterceptTouch(MotionEvent ev) {
// return true if you are interested in this touch event, e.g. it falls into
// a clickable area
}
和一些處理您viewpager裏面像
public void interceptTouch(MotionEvent ev) {
// here you react to the event
}
觸摸事件裏面你有
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true;
}
吩視圖尋呼機將處理的事件骯髒的方式是這樣的:
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (yourView.canInterceptTouch(ev))) {
yourView.interceptTouch(ev);
return true;
} else {
return doSomethingElse();
}
}
注意:儘管我已經做了類似的事情,並且體面的結果,但我不建議將它作爲解決方案,除非您在處理運動事件時擁有非常簡單的邏輯,否則會變得一團糟。如果你現在花一些時間來正確地做,你未來的自我會更開心。
編輯:代碼還沒有經過測試,只是爲了讓你知道你需要什麼。對不起,任何錯字。
正如問題中提到的,我不能這樣做。但感謝您抽出時間:) – MikeWallaceDev 2014-09-19 15:51:22
嘗試使用接口並實現它們。 – Panther 2014-09-19 15:53:17