Bonjour, j'essaie de créer un lecteur vidéo arrondi et j'utilise la bibliothèque Exoplaye2. Je mets le PLayerView dans un FrameLayout arrondi, mais je ne sais pas comment rendre le PlayerView lui-même arrondi. J'ai essayé ceci mais cela ne fonctionne pas, j'ai même créé un arrondi_shape_drawable et l'a ajouté à l'arrière-plan du Playeview, mais cela ne fonctionne pas (en gros, la définition de l'arrière-plan d'un PlayeView ne fonctionne pas du tout).
Voici mon fichier de mise en page simple:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="25dp"
android:layout_weight="4"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="1">
<FrameLayout
android:id="@+id/player_view_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.6"
android:padding="10dp"
android:background="@drawable/rounded_video_layout">
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/exoplayer_player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:fastforward_increment="@integer/exoplayer_playback_fastforward_increment_ms"
app:resize_mode="fill"
app:rewind_increment="@integer/exoplayer_playback_rewind_increment_ms"
app:show_timeout="@integer/exoplayer_show_control_timeout_ms"
app:use_artwork="true"
app:use_controller="false">
</com.google.android.exoplayer2.ui.PlayerView>
</FrameLayout>
</LinearLayout>
3 Réponses :
Sur votre FrameLayout , supprimez le remplissage puis appelez clipToOutline () sur cette vue, par exemple
player_view_layout.clipToOutline()
Par défaut, l'arrière-plan de la vue est utilisé comme fournisseur de contour pour une vue, donc si le dessin d'arrière-plan a des coins arrondis, tout le contenu de FrameLayout sera découpé pour correspondre.
https://developer.android.com/training/material/shadows-clipping
p >
J'ai essayé cela avant et cela ne fonctionne pas. Le problème est que le PlayerView ne change pas par rapport à son parent
@Dav J'ai ce code dans un projet et cela fonctionne très bien.
Après une longue recherche, je n'ai pas réussi à faire des coins arrondis PlayerView ou ImageView en xml uniquement (je ne pense pas que ce soit possible). J'ai donc décidé de le faire en java. Voici le code:
playerView.setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 15);
}
});
playerView.setClipToOutline(true);
Vous pouvez peut-être utiliser CardView comme ceci et PlayerView surface_type doit être texture_view .
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="8dp"
app:cardElevation="0dp">
<com.google.android.exoplayer2.ui.PlayerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:surface_type="texture_view"
app:use_controller="false" />
</android.support.v7.widget.CardView>
Vous pourriez créer une ressource dessinable avec des coins arrondis noircis et un milieu entièrement transparent, puis la superposer à l'intérieur d'un
ImageViewau-dessus de votre lecteur vidéo?