Uno de los requerimientos que puede existir, sobretodo si tu cliente es muy visual, es tener un video de fondo sobre la pantalla, por lo general puede ser en un login, ya que es una pantalla sin información y la primera cara para muchas cosas. A continuación les dire como pueden hacer esto de manera sencilla.

 

Primero que nada crearemos nuestro proyecto, con una actividad y un layout, al layout es importante que el contenedor principal sea un RelativeLayout

 

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




Posterior a eso colocaremos un VideoView que abarque toda la pantalla

 

<VideoView
    android:id="@+id/videoView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:layout_alignParentTop="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerInParent="true"
    android:focusable="false"
    android:focusableInTouchMode="false"/>




Y un View que nos servirá de mascara con opacidad(debido a que los videos tiene mucha variedad de colores, se les suele poner una pantalla con opacidad para que los colores blancos de nuestro formulario no se pierdan)


<View
    android:id="@+id/pantalla_opacidad"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000"
    android:alpha="0.6"
    />




Una vez teniendo estos dos elementos principales, podemos colocar lo que queramos en nuestro formulario, en este ejemplo usaremos un login, por lo que añadiré los datos requeridos en un LinearLayout que llamaré \"bloque_login_fields\". En nuestro activity es necesario que declaremos algunas variables, videoPlayer que será nuestra referencia al VideoView, timepoInactivo que será un contador de los segundos que se llevan sin hacer nada en la pantalla, m_handler y m_hanlder_task que nos servirán para colocar un timer en nuestra App, objAlpha1to0 será una animación para desaparecer objetos con animación fade, objBlackPantImg que nos ayudará a quitarle el alpha a nuestra pantalla y las otras que nos servirán para referencias a nuestros objetos.


VideoView videoPlayer;
EditText numcel;
EditText pass;
int tiempoInactivo=0;
Handler m_handler;
Runnable m_handlerTask;
private AnimationSet objAlpha1to0;
boolean empezoInactividad=false;
LinearLayout bloqueFields;
LinearLayout logo;
View pantalla;
private AnimationSet objBlackPantImg;




Para iniciar nuestro video es importante decirle la ruta del video, que en este caso lo he colocado en raw, lo conseguiremos de la siguiente manera

Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.videofondo);
videoPlayer.setVideoURI(uri);
//videoPlayer.resolveAdjustedSize()
videoPlayer.start();

videoPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
        mp.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
    }
});



También es importante iniciar nuestro timer y colocar un evento al dar clic al resto de la pantalla, esto con la finalidad de que pasando 10 segundos, se vea únicamente el video, pero si se presiona cualquier lugar de la pantalla vuelva el formulario


m_handler = new Handler();
m_handlerTask = new Runnable()
{
    @Overri
de
    public void run() {

        // do something
        pantallaInactividad();
        m_handler.postDelayed(m_handlerTask, 1000);

    }
};
m_handlerTask.run();


pantalla.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        cancelaAnimacion();

    }

});
 


Definimos la acción que hará el Timer, haciendo uso de las animaciones y de los objetos para ocultarlos cuando sea necesario.

private void pantallaInactividad()
{

    if(tiempoInactivo < 30000)
        tiempoInactivo++;


    if(tiempoInactivo == 10)
    {




        objAlpha1to0 = new AnimationSet(true);
        Animation anim1 = new AlphaAnimation(1, 0);
        anim1.setDuration(1500);
        objAlpha1to0.addAnimation(anim1);

        bloqueFields.startAnimation(objAlpha1to0);
        logo.startAnimation(objAlpha1to0);


        objBlackPantImg = new AnimationSet(true);
        Animation anim2 = new AlphaAnimation(0.6f, 0);
        anim2.setDuration(1500);
        objBlackPantImg.addAnimation(anim2);
        pantalla.startAnimation(objBlackPantImg);

        empezoInactividad=true;



    }

    if(empezoInactividad == true && tiempoInactivo == 11)
    {

        pantalla.setAlpha(0f);
        bloqueFields.setVisibility(View.GONE);
        logo.setAlpha(0f);

    }


}




También la acción para cuando se decida volver a poner el formulario

 

private void cancelaAnimacion()
{

    bloqueFields.setVisibility(View.VISIBLE);
    logo.setAlpha(1f);
    pantalla.setAlpha(0.6f);

    bloqueFields.clearAnimation();
    logo.clearAnimation();
    pantalla.clearAnimation();

    tiempoInactivo=0;
    empezoInactividad=false;

}



Y finalmente colocamos acciones para cuando se vuelva a la aplicación y se siga pudiendo ver el video

@Override
public void onResume()
{
    videoPlayer.start();
    cancelaAnimacion();

    super.onResume();
}



He de comentar que también incluí el proyecto completo como attachment por si alguien le parece mas fácil así