歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android2.2.3 實現多點縮放功能

Android2.2.3 實現多點縮放功能

日期:2017/3/1 10:41:31   编辑:Linux編程

Android2.2.3 實現多點縮放功能:

  1. // 觸摸事件
  2. @Override
  3. public boolean onTouchEvent(MotionEvent event) {
  4. if (false == this.is_initialized()) {
  5. return false;
  6. }
  7. try {
  8. PointF point_s = new PointF();
  9. point_s.x = event.getX();
  10. point_s.y = event.getY();
  11. int x = (int) point_s.x;// Float.to( event.getX() );
  12. int y = (int) point_s.y;// Float.floatToIntBits( event.getY() );
  13. switch (event.getAction() & MotionEvent.ACTION_MASK) {
  14. case MotionEvent.ACTION_DOWN:
  15. m_pressPt.set(x, y);
  16. mode = DRAG;
  17. break;
  18. case MotionEvent.ACTION_UP:
  19. if (mode == DRAG) {
  20. int px = x - m_pressPt.x;
  21. int py = y - m_pressPt.y;
  22. if (px != 0 && py != 0) {
  23. m_naviEngine.SetCenter(480 - px, 270 - py);
  24. }
  25. }
  26. mode = NONE;
  27. break;
  28. case MotionEvent.ACTION_POINTER_UP:
  29. if (mode == ZOOM) {
  30. float newDist = spacing(event);
  31. if (newDist > 10f) {
  32. float scale = newDist - oldDist;
  33. if (scale > 0) {
  34. m_levelIndex = getLevelIndex();
  35. // 設置當前比例尺
  36. if (m_levelIndex < m_level.length - 1) {
  37. m_levelIndex++;
  38. m_naviEngine.SetLevel(m_level[m_levelIndex]);
  39. m_btnZoomOut.setEnabled(true);
  40. if (m_levelIndex == m_level.length - 1) {
  41. m_btnZoomIn.setEnabled(false);
  42. }
  43. // 更新信息彈出框
  44. // showPopSign();
  45. }
  46. } else {
  47. m_levelIndex = getLevelIndex();
  48. // 設置當前比例尺以及按鈕狀態
  49. if (m_levelIndex > 0) {
  50. m_levelIndex--;
  51. m_naviEngine.SetLevel(m_level[m_levelIndex]);
  52. m_btnZoomIn.setEnabled(true);
  53. if (m_levelIndex == 0) {
  54. m_btnZoomOut.setEnabled(false);
  55. }
  56. // 更新信息彈出框
  57. // showPopSign();
  58. }
  59. }
  60. }
  61. }
  62. break;
  63. case MotionEvent.ACTION_POINTER_DOWN:
  64. oldDist = spacing(event);
  65. if (oldDist > 10f) {
  66. mode = ZOOM;
  67. }
  68. break;
  69. }
  70. } catch (UnsatisfiedLinkError e) {
  71. return false;
  72. }
  73. return m_gestureScanner.onTouchEvent(event);
  74. }
Copyright © Linux教程網 All Rights Reserved