public static void Touch() {}
static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2;
int mode = NONE;
int posX1=0, posX2=0, posY1=0, posY2=0;
float oldDist = 1f;
float newDist = 1f;
public boolean onTouchEvent(MotionEvent event) {
int act = event.getAction();
String strMsg = "";
switch(act & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
posX1 = (int) event.getX();
posY1 = (int) event.getY();
Log.d("zoom", "mode=DRAG" );
mode = DRAG;
break;
case MotionEvent.ACTION_MOVE:
if(mode == DRAG) {
posX2 = (int) event.getX();
posY2 = (int) event.getY();
if(Math.abs(posX2-posX1)>20 || Math.abs(posY2-posY1)>20) {
posX1 = posX2;
posY1 = posY2;
strMsg = "drag";
Toast toast = Toast.makeText(this, strMsg, Toast.LENGTH_SHORT);
toast.show();
}
} else if (mode == ZOOM) {
newDist = spacing(event);
Log.d("zoom", "newDist=" + newDist);
Log.d("zoom", "oldDist=" + oldDist);
if (newDist - oldDist > 20) { // zoom in
oldDist = newDist;
strMsg = "zoom in";
Toast toast = Toast.makeText(this, strMsg, Toast.LENGTH_SHORT);
toast.show();
} else if(oldDist - newDist > 20) { // zoom out
oldDist = newDist;
strMsg = "zoom out";
Toast toast = Toast.makeText(this, strMsg, Toast.LENGTH_SHORT);
toast.show();
}
}
break;
case MotionEventACTION_UP:
case MotionEventACTION_POINTER_UP:
mode = NONE;
break;
case MotionEventACTION_POINTER_DOWN:
mode = ZOOM;
newDist = spacing(event);
oldDist = spacing(event);
Logd("zoom", "newDist=" + newDist);
Logd("zoom", "oldDist=" + oldDist);
Logd("zoom", "mode=ZOOM");
break;
case MotionEvent.ACTIONCANCEL:
default :
break;
}
return superonTouchEvent(event);
}