WebView判断手势缩放

		wv.setOnTouchListener(new OnTouchListener() {
			private float OldX1, OldY1, OldX2, OldY2;
			private float NewX1, NewY1, NewX2, NewY2;

			@Override
			public boolean onTouch(View v, MotionEvent event) {
				switch (event.getAction()) {
				case MotionEvent.ACTION_POINTER_2_DOWN:
					if (event.getPointerCount() == 2) {
						OldX1 = event.getX(0);
						OldY1 = event.getY(0);
						OldX2 = event.getX(1);
						OldY2 = event.getY(1);
					}
					break;
				case MotionEvent.ACTION_MOVE:
					if (event.getPointerCount() == 2) {
						if(OldX1 == -1 && OldX2 == -1)
							break;
						NewX1 = event.getX(0);
						NewY1 = event.getY(0);
						NewX2 = event.getX(1);
						NewY2 = event.getY(1);
						float disOld = (float) Math.sqrt((Math.pow(OldX2
								- OldX1, 2) + Math.pow(OldY2 - OldY1, 2)));
						float disNew = (float) Math.sqrt((Math.pow(NewX2
								- NewX1, 2) + Math.pow(NewY2 - NewY1, 2)));
						Log.e("onTouch", "disOld=" + disOld + "|disNew="
								+ disNew);
						if (disOld - disNew >= 25) {
							// 缩小
//							wv.zoomOut();
							wv.loadUrl("javascript:mapScale=1;");
							Log.e("onTouch", "zoomOut");
						} else if (disNew - disOld >= 25) {
							// 放大
//							wv.zoomIn();
							wv.loadUrl("javascript:mapScale=-1;");
							Log.e("onTouch", "zoomIn");
						}
						OldX1 = NewX1;
						OldX2 = NewX2;
						OldY1 = NewY1;
						OldY2 = NewY2;
					}
					break;
				case MotionEvent.ACTION_UP:
					if (event.getPointerCount() < 2) {
						OldX1 = -1;
						OldY1 = -1;
						OldX2 = -1;
						OldY2 = -1;
					}
					break;
				}
				return false;
			}
		});

 

代码很容易理解 判断触控的手指数 同时去比较前后2点间的距离 从而做到手势缩放 最后发送消息到webview

在js中这里是模拟了鼠标滚轮的缩放 所以只给了一个mapscale 具体的情况也可以在js中提供一个放大缩小视口的接口 直接调用等多种方式

仅起到抛砖引玉的作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值