2012-08-07 14 views
6

tengo el detector gesto habitual para la detección de aventura, es un atributo de instancia de un SurfaceViewaplicación Fling sobre lienzo androide

GestureDetector flingDetector = new GestureDetector(getContext(),new SimpleOnGestureListener() { 

     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
        // Fling implementation 
      return true; 
     } 
}); 

estoy atrayendo a una gran cantidad de cosas complejas en un canvas y tengo un método translate(dx,dy) que uso con onScroll.

Entonces mi pregunta es ¿cómo implemento la aventura utilizando el método translate?

Parece haber muchas preguntas para detectar fling, mi pregunta es sobre su implementación.

Respuesta

4

No estoy seguro de que esto responda a su pregunta, lo intentaré.

Compruebe http://developer.android.com/reference/android/view/MotionEvent.html para MotionEvent.

Puede usar los dos eventos recibidos como e1 y e2 en el método onFling, y calcular las diferencias de coordenadas con e1.getX(), e2.getX(), e1.getY(), e2.getY() .. .. Con esto tendrías el dx y dy para usar con translate (dx, dy).

Dado que la aventura parece un gesto más dinámico, puede decidir que arrojar significa un movimiento más amplio y aplicar un factor de amplificación a dx y dy, de modo que cuando el usuario se desplaza, obtiene un movimiento preciso, pero al arrojarse , el movimiento real se amplifica.

Si este factor depende de la velocidad, tiene una respuesta personalizada para cada entrada del usuario.

(Una cosa diferente sería animar el resultado, que supongo que dependería de otras cosas).

Un ejemplo podría probar si se tratara de mí:

  • usuario se desplaza suavemente: El movimiento es dx, dy. Traducir (dx, dy).
  • aventuras de usuarios:
    movimiento real: dx = (e2.getX() - e1.getX() dy = (e2.getY() - e1.getY() factor de Fling:.. (Aplicación personalizada) . movimiento Modificado: dxModified = dx * velocityX * F dyModified = dy * velocityY * F Por último:... traducir (dxModified, dyModified)

    esperanza esto ayuda en cierta medida

    Editar: no lo hice se dio cuenta de que esta pregunta era de 2012, con suerte esto ayudará a alguien en algún momento. ¡Sería bueno saber de todos modos la implementación final!