volver studio regresar programar poner para deshabilitar como codigo boton bar atras anterior agregar activity android back-button back mediacontroller

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:

  1. Extender MediaController (para los propósitos de esta respuesta, RonnieMediaController )
  2. Anular dispatchKeyEvent() en RonnieMediaController
  3. Antes de encadenar a la superclase, verifique KeyEvent.KEYCODE_BACK , y si se encuentra, KeyEvent.KEYCODE_BACK a su actividad que finish()
  4. Utilice RonnieMediaController lugar de MediaController con su VideoView

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.