Android: cómo saber si se mantiene pulsado el botón

Estoy jugando con un juego en Android, y tengo una función MoveCharacter (dirección int) que mueve un sprite animado cuando se pulsan los botones

Por ejemplo, cuando el usuario presiona hacia arriba tengo este código:

mControls.UpButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mLevel.mCharAnimation.FrameUp(); } }); 

Sin embargo, me gustaría ser capaz de seguir moviendo el personaje, siempre y cuando el usuario mantiene el botón hacia abajo. Sorprendentemente, no he encontrado cómo hacerlo en Android. ¿Hay algún tipo de onButtonDownLister?

Necesita usar un OnTouchListener para tener acciones separadas para abajo, arriba y otros estados.

 mControls.UpButton.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN: // Do something return true; case MotionEvent.ACTION_UP: // No longer down return true; } return false; } }); 

Usted quiere onTouchListener () . Básicamente, esto le permitirá ver cuando el objeto se toca, ver cómo el usuario está moviendo su dedo, y saber cuándo dejar ir.

Puede utilizar OnTouchListener en OnTouchListener lugar

 mControls.UpButton.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: mLevel.mCharAnimation.FrameUp(); break; case MotionEvent.ACTION_UP: // User released the button, do your stuff here break; } return false; } }); 

Como se mencionó en los comentarios de Gary Bak que desea detectar si el usuario arrastra el dedo fuera del botón también.

 mButton.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN: // Pressed down return true; case MotionEvent.ACTION_UP: // Released return true; case MotionEvent.ACTION_CANCEL: // Released - Dragged finger outside return true; } return false; } }); 
  • Margen de los botones en disposición lineal
  • Libros sobre Android Diseño de interfaces de usuario
  • Diseño de GUI LCD de 5.7 "de 640x480 de diseño Android
  • Realizar cambios en la interfaz de usuario de la actividad principal desde el subproceso en Service
  • Diseño de material de Android de la barra de herramientas / SupportActionBar
  • Android: ¿Cómo puedo navegar de un "detalle" a otro "detalle", mientras que el botón "Arriba" vuelve a la lista "Maestro"?
  • ¿Por qué usar la palabra "invalidar" para solicitar que se vuelva a dibujar una vista?
  • Deshacerse del degradado en la parte superior de una actividad (Android)
  • Aplicación de la plantilla de PSD de Photoshop para Android
  • TextInputLayout no muestra mensaje de error después del borrado
  • Cambio de fragmentos o actividades (es decir, diseños) en el cambio de orientación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.