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>