Android: Ajouter une vue/Gérer la mise en page

Dans cette rubrique, vous apprendrez comment gérer la mise en page d'une vue ajoutée au BrightcoveVideoView.

Comprendre les mises en page

Avant de travailler avec le Brightcove Native SDK pour Android, il est conseillé de comprendre comment gérer et personnaliser les mises en page dans votre application Android.

Commencez par revoir le Interface utilisateur développeur Android guider.

Remplacement des paramètres de mise en page

Les BrightcoveVideoView est la classe parente du BrightcoveExoPlayerVideoView.

Si vous ajoutez un View à la BrightcoveVideoView , alors vous devez remplacer le setLayoutParams() méthode sur le View enfant d'appliquer uniquement les paramètres de mise en page qui ont du sens pour le View enfant.

Voici un exemple avec le setLayoutParams() méthode:

@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);
        }
    }
}

Cela permet au SurfaceView et le ImageView pour obtenir les paramètres de mise en page spécifiés pour le BrightcoveVideoView.

Bien qu'il soit possible d'appliquer les paramètres de mise en page uniquement aux SurfaceView et ImageView enfants, il serait difficile pour d'autres enfants de réagir lorsque le BrightcoveVideoView a ses paramètres de mise en page mis à jour.

Brightcove suggère de passer outre setLayoutParams() dans le LinearLayout enfant de sorte qu'il passe par la largeur, mais laisse la hauteur et la gravité inchangées.

Quand ajouter une vue

Applications pour ajouter un View dans le BrightcoveExoPlayerVideoView peut varier en fonction de l'objectif pour ajouter un objet devant le joueur. Par exemple, vous pouvez utiliser des vues pour ajouter/supprimer TextViews pour afficher les légendes, ou pour ajouter une mise en page pour le contrôleur dans l'App.

Les BrightcoveExoPlayerVideoView variante s'étend de la BaseVideoView qui étend l'Android FrameLayout. Cela signifie que vous pouvez ajouter une vue au BrightcoveExoPlayerVideoView de la même manière que vous le feriez pour un FrameLayout.

Voici un exemple dans le fichier activity_main.xml d'une application 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>