PageRenderTime 54ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 0ms

/OpenStreetMapViewer/src/org/osmdroid/RotationGestureDetector.java

http://osmdroid.googlecode.com/
Java | 39 lines | 29 code | 10 blank | 0 comment | 4 complexity | 1895b7774938b12f4b49e1e01a162284 MD5 | raw file
  1. package org.osmdroid;
  2. import android.view.MotionEvent;
  3. public class RotationGestureDetector {
  4. public interface RotationListener {
  5. public void onRotate(float deltaAngle);
  6. }
  7. protected float mRotation;
  8. private RotationListener mListener;
  9. public RotationGestureDetector(RotationListener listener) {
  10. mListener = listener;
  11. }
  12. private float rotation(MotionEvent event) {
  13. double delta_x = (event.getX(0) - event.getX(1));
  14. double delta_y = (event.getY(0) - event.getY(1));
  15. double radians = Math.atan2(delta_y, delta_x);
  16. return (float) Math.toDegrees(radians);
  17. }
  18. public void onTouch(MotionEvent e) {
  19. if (e.getPointerCount() != 2)
  20. return;
  21. if (e.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) {
  22. mRotation = rotation(e);
  23. }
  24. float rotation = rotation(e);
  25. float delta = rotation - mRotation;
  26. mRotation += delta;
  27. mListener.onRotate(delta);
  28. }
  29. }