es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El contenido con vista personalizada de video de Android WebView queda descentrado después de una rotación.

Cuando el usuario hace clic en el botón de pantalla completa en un video en WebView, WebChromeClient llama a onShowCustomView con la vista de video personalizada. Utilizo esta devolución de llamada para agregar la vista a un fragmento y mostrarla en pantalla completa.

En un comentario en una pregunta anterior, se sugirió que incluyera ‘orientation’ en el elemento android:configChanges. Según lo que puedo entender, no es posible continuar la reproducción utilizando el ciclo de vida de la actividad de destrucción y recreación estándar de Android.

Sin embargo, después de la rotación, la vista de video personalizada proporcionada por WebChromeClient parece seguir en pantalla completa, pero el reproductor de video real en su interior no se posiciona correctamente (se coloca en una esquina).

¿Existe alguna manera de forzar a Android a volver a la distribución del video, tal vez en onConfigurationChanged?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Es posible forzar a Android a reorganizar el video en onConfigurationChanged.

    Puede sobrescribir el método onConfigurationChanged en su actividad y llamar a requestLayout() en su vista de video personalizada para forzarlo a reorganizarse nuevamente. Esto debería resolver el problema de que el reproductor de video se posicione incorrectamente después de la rotación.

    Aquí hay un ejemplo de implementación:

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    
        // Obtenga la vista de video personalizada desde su fragmento
        MyCustomVideoView videoView = (MyCustomVideoView) getSupportFragmentManager().findFragmentById(R.id.my_video_fragment).getView().findViewById(R.id.custom_video_view);
    
        // Llame a requestLayout() en la vista de video personalizada para forzarla a reorganizarse nuevamente
        videoView.getView().requestLayout();
    }
    

    Reemplace MyCustomVideoView con el nombre real de la clase de su vista de video personalizada. También deberá reemplazar R.id.my_video_fragment y R.id.custom_video_view con los ID correspondientes a su fragmento y vista de video personalizada.

Comments are closed.