1:写一个根activity实现控制是否启用手势结束当前activity
public class BaseActivity extends Activity {
/** 手势监听 */
GestureDetector mGestureDetector;
/** 是否需要监听手势关闭功能 */
private boolean mNeedBackGesture = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
initGestureDetector();
}
private void initGestureDetector() {
if (mGestureDetector == null) {
mGestureDetector = new GestureDetector(getApplicationContext(),
new BackGestureListener(this));
}
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
if (mNeedBackGesture) {
return mGestureDetector.onTouchEvent(ev)
|| super.dispatchTouchEvent(ev);
}
return super.dispatchTouchEvent(ev);
}
/*
* 设置是否进行手势监听
*/
public void setNeedBackGesture(boolean mNeedBackGesture) {
this.mNeedBackGesture = mNeedBackGesture;
}
/*
* 返回
*/
public void doBack(View view) {
onBackPressed();
}
}
返回手势监听实现:
public class BackGestureListener implements OnGestureListener {
BaseActivity activity;
public BackGestureListener(BaseActivity activity) {
this.activity = activity;
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
if ((e2.getX() - e1.getX()) >100 && Math.abs(e1.getY() - e2.getY()) < 60 ) {
activity.onBackPressed();
return true;
}
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
}