studio - Botón de retroceso de Android y MediaController
programar boton atras android studio (3)
Basado en el código fuente, esto debería funcionar:
- Extender
MediaController
(para los propósitos de esta respuesta,RonnieMediaController
) - Anular
dispatchKeyEvent()
enRonnieMediaController
- Antes de encadenar a la superclase, verifique
KeyEvent.KEYCODE_BACK
, y si se encuentra,KeyEvent.KEYCODE_BACK
a su actividad quefinish()
- Utilice
RonnieMediaController
lugar deMediaController
con suVideoView
Personalmente, lo dejaría solo, ya que con este cambio, su usuario no puede hacer que un RonnieMediaController
desaparezca a pedido.
Sé cómo tomar el control del botón Atrás. Tengo un VideoView
incrustado en un FrameLayout
. Mi pregunta es cuando el video aparece, los controles de video están presentes durante unos segundos. Al presionar el botón Atrás mientras están visibles, se ocultan los controles de video. ¿Hay alguna forma de ignorar esa función y hacer la siguiente acción de retroceso como si los controles de video no fueran visibles?
La razón por la que pregunto es si realmente quiero volver, debo presionar el botón Atrás dos veces; Una vez para ocultar los controles y segundo para volver realmente
También puede hacer que la Actividad maneje el evento:
mVideoView.setMediaController(new MediaController(this){
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK ) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
((Activity) getContext()).onBackPressed();
return true;
}
}
return super.dispatchKeyEvent(event);
}
});
Entonces manéjalo en tu actividad:
@Override
public void onBackPressed() {
// clean up or send result here
finish();
}
Usted puede simplemente escribir:
mVideoView.setMediaController(new MediaController(this){
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK)
((Activity) getContext()).finish();
return super.dispatchKeyEvent(event);
}
});
No hay necesidad de crear nueva clase.