Cómo forzar la fusión alfa en una vista de video

Tengo una aplicación de Android que muestra un VideoView con botones delante. En el dispositivo de destino, los botones se muestran en la parte superior correctamente hasta que VideoView se vuelve a dibujar (por ejemplo, al regresar de otra actividad). Luego, los botones están ocultos por VideoView.

Esto no ocurre en otros dos dispositivos y, por lo que puedo decir, no es un comportamiento esperado en Android. Creo que tiene que ver con un error que veo arrojado en el dispositivo. la etiqueta es 'TIOverlay' y el texto es

'static void overlay_control_context_t::overlay_destroyOverlay( overlay_control_device_t*, overlay_t*) : Lets Switch off Alpha Blending'

¿Hay algún método para obligar a VideoView a recalcular su alfa? Dado que la vista inicial es correcta, supongo que simplemente no se tiene en cuenta el diseño completo al volver a dibujar.

Este es mi código de inicialización de VideoView:

    //set up video
    this.videoView = (VideoView) findViewById(R.id.introVideoView);
    videoView.setZOrderOnTop(false);


    //create intro movie and begin playing
    String uri = "android.resource://"+getPackageName()+"/"+R.raw.movie;
    videoView.setVideoURI(Uri.parse(uri));
    //set to looping
    videoView.setOnPreparedListener(new OnPreparedListener(){

    @Override
    public void onPrepared(MediaPlayer mp)
    {
    mp.setLooping(true);
    }});
    videoView.start();

Editar

El diseño que estoy usando para mostrar los botones frente a la vista de video es:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainLayout" >

<VideoView
    android:id="@+id/introVideoView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

<ImageButton
    android:id="@+id/exitDemoButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:contentDescription="Exit Demo >>"
    android:onClick="exitDemo"
    android:background="#00000000"
    android:src="@drawable/exit_selector" />


<LinearLayout
    android:id="@+id/buttonLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:orientation="horizontal" >
 <ImageButton
        android:id="@+id/resumeVideoButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onResumeClicked"
        android:contentDescription="Resume Video"
        android:background="#00000000"
        android:src="@drawable/resume_selector" />
    <ImageButton
        android:id="@+id/guidedTourButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onTourClicked"
        android:contentDescription="Guided Tour"
        android:background="#00000000"
        android:src="@drawable/tour_selector" />   
</LinearLayout>

preguntado el 09 de marzo de 12 a las 23:03

"Tengo una aplicación de Android que muestra un VideoView con botones delante", ¿cómo haces esto? -

Buena pregunta y respuesta, Jason! Lo voté. Dado que ha respondido a su propia pregunta, le recomendamos que la publique como una publicación separada de "Respuesta" para que pueda obtener crédito por ella. Comportamiento de Stackoverflow perfectamente legítimo; ¡incluso hay una insignia por responder tu propia pregunta! -

1 Respuestas

Encontré una solución. Aparece porque estaba volviendo a esta vista desde otros intentos con VideoViews similares. Necesitaba suspender el video usando VideoView.suspend() antes de cambiar a otra intención o volver de esa intención a esta. Supongo que esto se debe a que el hardware solo tenía un buen búfer de video de hardware y mantuvo el VideoView Acababa de dejar en el búfer.

Respondido 25 Feb 15, 16:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.