package com.gnod.geekr.ui.activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import com.actionbarsherlock.app.SherlockActivity;
import com.gnod.geekr.app.AppManager;
public abstract class BaseActivity extends SherlockActivity {
private boolean isEnableGesture = true;
private GestureDetector detector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//add activity to atctivity's stack
AppManager.getInstance().addActivity(this);
detector = new GestureDetector(this, gestureListener);
}
@Override
protected void onDestroy() {
super.onDestroy();
//remove activity from activity's stack
AppManager.getInstance().finishActivity(this);
}
public void enableFling(boolean checked){
isEnableGesture = checked;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if(isEnableGesture && detector.onTouchEvent(ev)){
return true;
}
return super.dispatchTouchEvent(ev);
}
public boolean flingRight() {
finish();
return true;
}
public boolean flingLeft() {
return false;
}
private OnGestureListener gestureListener = new OnGestureListener() {
@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 false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if(e2.getX() - e1.getX() > 150 && Math.abs(e2.getY() - e1.getY()) < 100){
return flingRight();
} else if(e1.getX() - e2.getX()> 150&& Math.abs(e2.getY() - e1.getY()) < 100) {
return flingLeft();
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
};
}