Digamos que tiene un TextView
que muestra un número como 0 y tiene un Button
. Ahora, si el usuario presiona el botón, el número en el TextView aumentará por uno (esto sé cómo hacerlo) pero si el usuario presiona el botón y no lo suelta, entonces el número en el TextView
debe aumentarse y esto debería repítelo siempre que el usuario no libere el Button
. En otras palabras: ¿Cómo aumentar el número una y otra vez mientras el usuario mantenga presionado el botón?Repita una acción cuando se presiona el botón largo
Respuesta
Un enfoque general (no específico de Android) sería detectar la prensa y lanzar el evento por separado. El evento de prensa inicia una tarea periódica (Runnable
o Thread
) que se agrega al contador (digamos 5 veces por segundo o una vez cada 200 ms). El evento de lanzamiento detiene la tarea periódica.
- Establecer un
View.OnLongClickListener
para su botón - Dé su actividad un
Runnable
, e inicializar (pero no lo inicie) cuando se carga la actividad - Tener la OnLongClickListener haga su tarea asíncrona regular de actualización el cuadro de texto y verificando la hora desde que se hizo clic por primera vez
- Crea un
OnTouchListener
que pausa elRunnable
cuando se libera el evento táctil.
Sé que es un borrador, pero este es un modelo muy útil para poder volver a usar y modificar, por lo que vale la pena que se hunde sus garras en él ...
que necesitará para programar una evento repetitivo asincrónico cuando recibe un evento mousePressed
y lo detiene cuando recibe un evento mouseReleased
.
Hay muchas maneras de manejar esto en Java. Me gusta usar las clases java.util.concurrent
, que son bastante flexibles. Sin embargo, hay algunas cosas que se deben tener en cuenta:
Si sus eventos asincrónicos no ocurren en la secuencia de envío de evento, debe establecer el texto JButton
usando SwingUtilities.invokeLater()
.
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Frame
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
final JButton button = new JButton("0");
final ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
button.addMouseListener(new MouseAdapter()
{
int counter = 0;
ScheduledFuture<?> future;
@Override
public void mousePressed(MouseEvent e)
{
Runnable runnable = new Runnable()
{
public void run()
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
button.setText(String.valueOf(counter++));
}
});
}
};
future = executor.scheduleAtFixedRate(runnable, 0, 200, TimeUnit.MILLISECONDS);
}
@Override
public void mouseReleased(MouseEvent e)
{
if (future != null)
{
future.cancel(true);
}
}
});
frame.add(button);
frame.setSize(400, 400);
frame.setVisible(true);
}
}
- 1. iPhone realiza una acción cuando se presiona el botón borrar UITextField/UISearchBar
- 2. ¿Cómo elimino una actividad cuando se presiona el botón Atrás?
- 3. C# WPF Realice una acción mientras presiona el botón
- 4. guarda el estado cuando se presiona el botón Atrás
- 5. Aumenta continuamente el valor entero cuando se presiona el botón
- 6. Detectar cuando se presiona el botón de inicio iOS
- 7. cambiar el color del botón de texto cuando se presiona
- 8. setResult no funciona cuando se presiona el botón ATRÁS
- 9. Los gráficos deberían persistir cuando se presiona otro botón Activado
- 10. Cancelar AsyncTask cuando el usuario presiona el botón
- 11. Aplicar estilo diferente al botón cuando se presiona
- 12. Borrar el foco EditText cuando se presiona el botón Atrás cuando el teclado está mostrando
- 13. Forzar el cierre de una aplicación de iPhone cuando se presiona el botón Inicio (en iOS4)
- 14. juego sonido mientras se presiona el botón -Android
- 15. Enviar formulario cuando se presiona Entrar
- 16. Cómo finalizar() una Actividad cuando se presiona el botón de Inicio
- 17. Diálogo que se muestra dos veces cuando se presiona el botón Atrás
- 18. Android cómo hacer que el texto del botón sea negrita cuando se presiona o se enfoca
- 19. android: acción del teclado de pantalla cuando se presiona la tecla Listo
- 20. ¿Cómo hacer que el elemento no pierda el foco cuando se presiona el botón?
- 21. El botón predeterminado en JFrame no se activa cuando se presiona la tecla enter
- 22. ¿Cómo puedo dibujar una línea vertical en una actividad cuando se presiona un botón?
- 23. Cómo saber cuándo se presiona el botón Atrás en una UINavigationControllerStack
- 24. Botón de retroceso invisible cuando el controlador de vista se presiona en el controlador de navegación
- 25. Cómo descartar el teclado cuando se presiona el botón 'Buscar' de UISearch Bar?
- 26. Elija el botón mientras presiona el botón Entrar
- 27. Ocultando el teclado cuando se presiona el botón borrar en UITextField
- 28. Diálogo de Android, mantenga el cuadro de diálogo abierto cuando se presiona el botón
- 29. VBA Cómo forzar a una función a regresar cuando se presiona un botón de formulario
- 30. Cómo actualizar solo una parte de la página cuando se presiona F5 o botón de actualización
+1 Esto suena como el proceso específico de Android que estaba describiendo más genéricamente. –