Compose Material3

La bibliothèque media3-ui-compose-material3 fournit un composable Player qui affiche les commandes du lecteur, la barre de progression et le contenu multimédia actuel. Il gère en interne la gestion de l'état et le style Material 3. Pour en savoir plus sur la bibliothèque à utiliser, consultez la présentation de Media3 Compose.

// The library provides styled UI components
Row {
  SeekBackButton(player)
  PlayPauseButton(player)
  SeekForwardButton(player)
}

// You can rearrange the composables into a layout that suits your needs
@Composable
fun PlayerProgressControlsLeftAligned(player: Player) {
  Row {
    PositionAndDurationText(player)
    ProgressSlider(player)
  }
}

@Composable
fun PlayerProgressControlsCenterAligned(player: Player) {
  Row {
    PositionText(player)
    ProgressSlider(player)
    DurationText(player)
  }
}

Personnaliser les composants Material 3

Bien que media3-ui-compose-material3 fournisse des composants conformes à la conception Material 3, vous gardez un contrôle total sur la thématisation. Vous pouvez personnaliser les couleurs, la typographie et les formes en encapsulant l'UI de votre lecteur dans un MaterialTheme.

Par exemple, pour modifier la couleur de PlayPauseButton, vous pouvez fournir un colorScheme personnalisé :

MaterialTheme(
  colorScheme =
    lightColorScheme(
      primary = Color.Red, // Change the primary color for the button
      onPrimary = Color.White,
    )
) {
  // The PlayPauseButton will now use the custom colors
  PlayPauseButton(player)
}

Composants Material3 disponibles

La bibliothèque media3-ui-compose-material3 fournit un ensemble de composables prédéfinis pour les commandes du lecteur courantes. Voici quelques-uns des composants que vous pouvez utiliser directement dans votre application :

Composant Description
Player Un lecteur avec des commandes, une barre de progression, des sous-titres et un cadre de contenu pour la vidéo ou l'image.
PlayPauseButton Bouton qui permet de basculer entre la lecture et la mise en pause, et qui affiche les états de mise en mémoire tampon, de relecture et de nouvelle tentative.
SeekBackButton Bouton permettant de revenir en arrière d'un incrément défini.
SeekForwardButton Bouton permettant d'avancer d'un incrément défini.
NextButton Bouton permettant d'accéder à l'élément multimédia suivant.
PreviousButton Bouton permettant d'accéder à l'élément multimédia précédent.
RepeatButton Bouton permettant de parcourir les modes de répétition.
ShuffleButton Bouton permettant d'activer ou de désactiver le mode aléatoire.
MuteButton Bouton permettant de couper et de réactiver le son du lecteur.
LiveButton Bouton qui indique si la lecture d'une diffusion en direct est au point de direct et qui permet d'accéder au point de direct lorsque l'utilisateur appuie dessus.
PositionAndDurationText Un composable de texte qui affiche la position actuelle et la durée totale.
PositionText Un composable de texte qui affiche la position actuelle.
DurationText Un composable textuel qui affiche la durée totale.
RemainingDurationText Un composable textuel qui affiche la durée restante.
ProgressSlider Un curseur qui indique la progression de la lecture et permet à l'utilisateur de rechercher un contenu.
BufferingIndicator Indicateur de progression affiché pendant la mise en mémoire tampon du lecteur.

Cette liste n'est pas exhaustive. Consultez la documentation de référence de l'API de la bibliothèque pour connaître tous les composants disponibles.

Deux autres composables prédéfinis dont vous aurez probablement besoin sont liés à la gestion des surfaces et se trouvent dans le module media3-ui-compose, car ils ne possèdent pas de thématisation Material.

Composant Description
ContentFrame Surface pour le contenu multimédia qui gère le format, le redimensionnement, l'obturateur, l'illustration et un emplacement pour les sous-titres.
PlayerSurface Surface brute qui encapsule SurfaceView et TextureView dans AndroidView.