來源我認爲onDown事件已被滾動型恢復,所以我們不能獲得活動中的事件。如果您自定義ScrollView並重寫dispatchTouchEvent()和onTouchEvent(),則問題將解決。
活動:
public class TestActivity extends Activity {
private MyScrollView scrollView;
private TestActivity me;
private GestureDetector detector;
protected void onCreate(Bundle savedInstanceState) {
this.me = this;
MySimpleGestureListener gestureListener = new MySimpleGestureListener();
this.detector = new GestureDetector(gestureListener);
this.scrollView.setOnTouchListener(onTouchListerner);
this.scrollView.setDetector(detector);
}
private View.OnTouchListener onTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return me.detector.onTouchEvent(event);
}
};
}
MySimpleGestureListener:
public class MySimpleGestureListener extends SimpleOnGestureListener {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return super.onScroll(e1, e2, distanceX, distanceY);
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO do your onFling here
}
}
最後,MyScrollView
public class MyScrollView extends ScrollView {
private GestureDetector detector;
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
if (this.detector!= null) {
detector.onTouchEvent(ev);
super.dispatchTouchEvent(ev);
return true;
}
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
super.onTouchEvent(ev);
//
if (this.detector != null) {
return this.detector.onTouchEvent(ev);
}
return false;
}
// here is the getter and setter
}
希望這有助於。
我得到它的工作,但我永遠無法確定它最終做了什麼。你的解決方案適用於我的情況,所以我接受了你的答案。我仍然想知道爲什麼它不起作用。 – mcrumley 2011-01-05 07:14:08
我也是。我想知道爲什麼它不起作用。希望有人回答。 – 2011-01-08 09:01:18
你有幸跟蹤造成這種情況的原因嗎?我患有同樣的問題,但即使在主要活動中使用onFling方法,也似乎無法使其工作。 – 2011-01-30 11:39:48