Androide: Agregar vista / administrar diseño

En este tema, aprenderá a administrar el diseño de una vista agregada al BrightcoveVideoView .

Entender los diseños

Antes de trabajar con Brightcove Native SDK para Android, es una buena idea comprender cómo administrar y personalizar diseños en su aplicación de Android.

Empiece por revisar el Interfaz de usuario para desarrolladores de Android guía.

Anulación de parámetros de diseño

La BrightcoveVideoView es la clase padre del BrightcoveExoPlayerVideoView.

Si está agregando un View hacia BrightcoveVideoView , entonces necesitas anular el setLayoutParams() método en el View niño para aplicar solo los parámetros de diseño que tengan sentido para el View niño.

Aquí hay un ejemplo con el setLayoutParams() método:

@Override
public void setLayoutParams(ViewGroup.LayoutParams layoutParams) {
    Log.v(TAG, "setLayoutParams: " + layoutParams);
    super.setLayoutParams(layoutParams);
    if (layoutParams != null) {
        int childCount = getChildCount();
        FrameLayout.LayoutParams frameLayoutParams =
            new FrameLayout.LayoutParams(layoutParams.width, layoutParams.height);
        frameLayoutParams.gravity = Gravity.CENTER;
        for (int i = 0; i < childCount; i++) {
            getChildAt(i).setLayoutParams(frameLayoutParams);
        }
    }
}

Esto permite SurfaceView y el ImageView para obtener los parámetros de diseño especificados para el BrightcoveVideoView.

Aunque es posible aplicar los parámetros de diseño solo a los SurfaceView y ImageView niños, sería difícil que otros niños reaccionaran cuando el BrightcoveVideoView tiene sus parámetros de diseño actualizados.

Brightcove sugiere anular setLayoutParams() en el LinearLayout niño para que pase a lo ancho, pero deja la altura y la gravedad sin modificar.

Cuándo agregar una vista

Aplicaciones para agregar un View en el BrightcoveExoPlayerVideoView se puede variar en función del objetivo de añadir un objeto delante del jugador. Por ejemplo, puede usar vistas para agregar / eliminar TextViews para mostrar los subtítulos o para agregar un diseño para el controlador en la aplicación.

La BrightcoveExoPlayerVideoView variante se extiende desde el BaseVideoView que extiende el Android FrameLayout. Esto significa que puede agregar una vista al BrightcoveExoPlayerVideoView de la misma manera que lo harías con un FrameLayout.

Aquí hay un ejemplo en el archivo activity_main.xml de una aplicación de Android:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <com.brightcove.player.view.BrightcoveExoPlayerVideoView
        android:id="@+id/brightcove_video_view"
        android:layout_width="match_parent"
        android:layout_height="280dp"
        android:layout_gravity="center_horizontal|top">
        <RelativeLayout
            android:id="@+id/rl_elephant"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|bottom"
            >
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text=“HELLO WORLD”
                android:textColor="@color/white"
                >
        </RelativeLayout>
    </com.brightcove.player.view.BrightcoveExoPlayerVideoView>
</LinearLayout>