Android2.2.3 实现多点缩放功能

// 触摸事件
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		if (false == this.is_initialized()) {
			return false;
		}

		try {
			PointF point_s = new PointF();
			point_s.x = event.getX();
			point_s.y = event.getY();
			int x = (int) point_s.x;// Float.to( event.getX() );
			int y = (int) point_s.y;// Float.floatToIntBits( event.getY() );

			switch (event.getAction() & MotionEvent.ACTION_MASK) {
			case MotionEvent.ACTION_DOWN:
				m_pressPt.set(x, y);
				mode = DRAG;
				break;
			case MotionEvent.ACTION_UP:

				if (mode == DRAG) {
					int px = x - m_pressPt.x;
					int py = y - m_pressPt.y;

					if (px != 0 && py != 0) {
						m_naviEngine.SetCenter(480 - px, 270 - py);
					}
				}


				mode = NONE;

				break;
				
			case MotionEvent.ACTION_POINTER_UP:
				if (mode == ZOOM) {
					float newDist = spacing(event);
					if (newDist > 10f) {
						float scale = newDist - oldDist;
						if (scale > 0) {
							m_levelIndex = getLevelIndex();
							// 设置当前比例尺
							if (m_levelIndex < m_level.length - 1) {
								m_levelIndex++;
								m_naviEngine.SetLevel(m_level[m_levelIndex]);
								m_btnZoomOut.setEnabled(true);
								if (m_levelIndex == m_level.length - 1) {
									m_btnZoomIn.setEnabled(false);
								}

								// 更新信息弹出框
								// showPopSign();
						
							}
						} else {
							m_levelIndex = getLevelIndex();
							// 设置当前比例尺以及按钮状态
							if (m_levelIndex > 0) {
								m_levelIndex--;
								m_naviEngine.SetLevel(m_level[m_levelIndex]);
								m_btnZoomIn.setEnabled(true);
								if (m_levelIndex == 0) {
									m_btnZoomOut.setEnabled(false);
								}

								// 更新信息弹出框
								// showPopSign();
							}
						}
					}
				}
				break;
			case MotionEvent.ACTION_POINTER_DOWN:
				oldDist = spacing(event);
				if (oldDist > 10f) {

					mode = ZOOM;

				}
				break;
			}
		} catch (UnsatisfiedLinkError e) {
			return false;
		}

		return m_gestureScanner.onTouchEvent(event);
	}

你可能感兴趣的:(android,UP,float)