主要问题是加入ScrollView之后,左右滑动不执行OnGestureListener的函数了。
为解决这个问题,应该先覆写dispatchTouchEvent方法,然后在执行父类方法钱加入detector.onTouchEvent(ev),来先执行OnGestureListener的函数
package com.sid.point;
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
public class AboutActivity extends Activity implements OnGestureListener {
private GestureDetector detector;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about_layout);
//绑定新的分析用户的动作类
detector = new GestureDetector(this);
}
/* 以下是监听左右滑动事件 ;需要继承OnGestureListener*/
@Override
public boolean onTouchEvent(MotionEvent event) {
return this.detector.onTouchEvent(event);
}
/**
* 解决ScrollView后不执行左右移动监听事件OnGestureListener
* 在Activity中添加ScrollView实现滚动activity的效果后,activity的滑动效果却无法生效了
* 原因是因为activity没有处理滑动效果,重写以下方法即可解决。
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
detector.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
/**
* 监听滑动
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
System.out.println("=======================================");
if (e1.getX() - e2.getX() < -120) {
finish();
}
return true;
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
}