public class InOutTouchListener implements OnTouchListener { float oldDist = 0, newDist = 0; WebView wv; Context context; public InOutTouchListener(Context con) { context = con; } public boolean onTouch(View v, MotionEvent event) { if (v instanceof WebView) { wv = (WebView) v; switch (event.getAction() & MotionEvent.ACTION_MASK){ // 开始 case MotionEvent.ACTION_POINTER_DOWN: oldDist = spacing(event); break; // 拖动 case MotionEvent.ACTION_MOVE: newDist = spacing(event); break; // 结束 case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: if (oldDist != 0 || newDist != 0 || oldDist != newDist) { float d = newDist - oldDist; // 一次滑动的长度控制在100像素之内,如果还想进一步放大或者缩小,就挪开手指,重新来滑动 if (d > 100) { // 取zoomIn()的值,如果返回true就表示还可以缩放, 如果返回false就表示不能再缩放了 boolean flag = wv.zoomIn(); if (!flag) { Toast.makeText(context, "不能再放大了...", 2000).show(); } } else if (d < -100) { boolean flag = wv.zoomOut(); if (!flag) { Toast.makeText(context, "不能再缩小了...", 2000).show(); } } newDist = 0; oldDist = 0; } break; } } return false; } // 计算距离 private float spacing(MotionEvent event) { float x = event.getX(0) - event.getX(1); float y = event.getY(0) - event.getY(1); return FloatMath.sqrt(x * x + y * y); } }
|
|