Wprowadzenie do interfejsu użytkownika opartego na widokach

Dodawanie zależności

Kotlin

implementation("androidx.media3:media3-ui:1.6.0")

Groovy

implementation "androidx.media3:media3-ui:1.6.0"

PlayerView

Najważniejszym elementem jest PlayerView, czyli widok odtwarzania multimediów. PlayerView wyświetla film, obrazy, napisy i okładkę albumu podczas odtwarzania, a także elementy sterujące odtwarzaniem.

PlayerView ma metodę setPlayer() dołączania i odłączania (z ominięciem null) instancji Player.

PlayerView może służyć do odtwarzania filmów, obrazów i dźwięku. Renderuje on filmy i napisy w przypadku odtwarzania wideo, bitmapy w przypadku odtwarzania obrazu oraz może wyświetlać elementy graficzne zawarte w metadanych w plikach audio. Możesz go umieścić w plikach układu tak samo jak każdy inny komponent UI. Na przykład pole PlayerView może być uwzględnione w tym pliku XML:

<androidx.media3.ui.PlayerView
    android:id="@+id/player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:show_buffering="when_playing"
    app:show_shuffle_button="true"/>

Wycinek powyżej pokazuje, że PlayerView zawiera kilka atrybutów. Atrybutów tych można używać do dostosowywania zachowania widoku, a także jego wyglądu i wygody. Większość z tych atrybutów ma odpowiednie metody settera, których można używać do dostosowywania widoku w czasie wykonywania. Więcej informacji o tych atrybutach i metodach znajdziesz w dokumentacji PlayerView.

Gdy widok zostanie zadeklarowany w pliku układu, można go wyszukać w metodie onCreate aktywności:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  // ...
  playerView = findViewById(R.id.player_view)
}

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // ...
  playerView = findViewById(R.id.player_view);
}

Po zainicjowaniu odtwarzacza można go dołączyć do widoku, wywołując funkcję setPlayer:

Kotlin

// Instantiate the player.
val player = ExoPlayer.Builder(context).build()
// Attach player to the view.
playerView.player = player
// Set the media item to be played.
player.setMediaItem(mediaItem)
// Prepare the player.
player.prepare()

Java

// Instantiate the player.
player = new ExoPlayer.Builder(context).build();
// Attach player to the view.
playerView.setPlayer(player);
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();

PlayerControlView

PlayerControlView to jeden z widoków podrzędnych PlayerView, który zawiera pasek postępu i przyciski do sterowania odtwarzaniem. Pamiętaj, że PlayerControlView nie jest przeznaczony do używania jako samodzielny komponent poza PlayerView. Można go dostosować, ustawiając atrybuty w komponencie PlayerView (które zostaną przekazane do komponentu PlayerControlView) lub podając niestandardowy kontroler w komponencie android:id="@id/exo_controller.

Wybieranie typu powierzchni

Atrybut surface_type elementu PlayerView pozwala określić typ powierzchni, na której wyświetlany jest film. Dozwolone wartości to surface_view, texture_view, spherical_gl_surface_view (wartość specjalna dla odtwarzania filmów sferycznych), video_decoder_gl_surface_view (renderowanie filmów za pomocą rendererów rozszerzeń) i none (tylko do odtwarzania dźwięku). Więcej informacji o tym, który typ powierzchni wybrać, znajdziesz na stronie Surface.