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:
- TextView como una barra de progresión con minipulación textcolor?
- Crear tablas de donuts Similar a Google Fit
- Implementación de las directrices de diseño de Google para Sliders
- ¿Cómo crear dinámicamente un botón y asignarle un estilo definido en styles.xml?
- Barras del sistema translúcido y margen de contenido en KitKat
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?
- ¿Por qué mis estados de botones personalizados no funcionan?
- Cómo cambiar el color de fondo del menú de opciones?
- Desarrollo de rompecabezas de diseño en Android
- Cómo cambiar el color de fondo de la aplicación de forma permanente
- Latch (usado para esperar la respuesta asíncrona) congela el WebView (y la interfaz de usuario)
- Cómo ocultar / mostrar el botón en el widget de pantalla de inicio de Android
- Cómo hacer que la barra de acción SearchView rellene toda la barra de acción?
- Cómo llamar a los colores de los recursos de forma dinámica en Android?
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; } });
- Obtener el valor de índice del elemento de menú seleccionado en el cajón de navegación
- ¿Cómo eliminar todos los comentarios del archivo específico de Android Studio?