package com.himamis.retex.editor.android.event; import android.content.Context; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import com.himamis.retex.editor.android.FormulaEditor; import com.himamis.retex.editor.share.event.ClickListener; public class ClickListenerAdapter implements View.OnTouchListener, GestureDetector.OnGestureListener { private ClickListener mClickListener; private GestureDetector mGestureDetector; int shiftX = 0; public ClickListenerAdapter(ClickListener clickListener, Context context) { mClickListener = clickListener; mGestureDetector = new GestureDetector(context, this); } @Override public boolean onTouch(View v, MotionEvent event) { if(v instanceof FormulaEditor){ shiftX = ((FormulaEditor) v).getShiftX(); } if (event.getAction() == MotionEvent.ACTION_DOWN){ mClickListener.onPointerDown((int)(event.getX()-shiftX), (int) event.getY()); }else if (event.getAction() == MotionEvent.ACTION_UP){ mClickListener.onPointerUp((int) event.getX()-shiftX, (int) event.getY()); } mGestureDetector.onTouchEvent(event); return true; } ///////////////////////////// // GestureDetector ///////////////////////////// @Override public boolean onDown(MotionEvent e) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { mClickListener.onScroll((int) distanceX, (int) distanceY); return false; } @Override public void onLongPress(MotionEvent event) { mClickListener.onLongPress((int) event.getX(), (int) event.getY()); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } }