I have created an activity implementing on touch listener and onclick listener .
Both are not working together. If ontouch works on click does not work and if onclick works ontouch does not works.
here is my code
public class QuickStart extends Activity implements OnTouchListener
{
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private GestureDetector gestureDetector;
private ViewFlipper viewFlipper;
int page = 0;
private Button btn_menu;
private LinearLayout layout_menu;
Developer developer = new Developer();
private ArrayList<SideMenuItem> arrayList = new ArrayList<SideMenuItem>();
private SideMenuEntryAdapter adapter;
private ListView list_side;
private Context context;
private int flag = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.quickstart);
context = this;
gestureDetector = new GestureDetector(new MyGestureDetector());
setupUI();
arrayList = developer.setupList();
adapter = new SideMenuEntryAdapter(this, arrayList);
list_side.setAdapter(adapter);
list_side.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
System.out.println(position);
Developer.Menu(context, position,Developer.quick_start);
if (flag == 0) {
flag = 1;
layout_menu.setVisibility(LinearLayout.VISIBLE);
} else {
flag = 0;
layout_menu.setVisibility(LinearLayout.GONE);
}
}
});
}
private void setupUI() {
viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
viewFlipper.setOnTouchListener(this);
btn_menu = (Button) findViewById(R.id.btn_menu);
layout_menu = (LinearLayout) findViewById(R.id.layout_menu);
list_side = (ListView) findViewById(R.id.listview_side);
btn_menu.setClickable(true);
layout_menu.setClickable(true);
list_side.setClickable(true);
btn_menu.setFocusable(true);
btn_menu.setFocusableInTouchMode(true);
layout_menu.setFocusable(true);
layout_menu.setFocusableInTouchMode(true);
list_side.setFocusable(true);
list_side.setFocusableInTouchMode(true);
btn_menu.setEnabled(true);
layout_menu.setEnabled(true);
list_side.setEnabled(true);
btn_menu.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (v == btn_menu) {
System.out.println("Menu");
if (flag == 0) {
flag = 1;
layout_menu.setVisibility(LinearLayout.VISIBLE);
} else {
flag = 0;
layout_menu.setVisibility(LinearLayout.GONE);
}
}
}
});
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if (page < 7) {
page++;
viewFlipper.showNext();
}
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if (page > 0) {
page--;
viewFlipper.showPrevious();
}
}
} catch (Exception e) {
// nothing
}
return false;
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return false;
} else {
return true;
}
}
Make your activity implement the onGestureListener.
then in you activity add
Then overrid the onTouchEvent(MotionEvent event) like below:
Also Finally you need to overide onFling method something like: