Wprowadzenie do interfejsu użytkownika opartego na widokach

Dodawanie zależności

Kotlin

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

Dynamiczny

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

PlayerView

Najważniejszym komponentem jest PlayerView, czyli widok odtwarzania multimediów. Podczas odtwarzania PlayerView wyświetla filmy, obrazy, napisy i okładki albumów, a także elementy sterujące odtwarzaniem.

PlayerView ma metodę setPlayer(), która służy do dołączania i odłączania (przez przekazanie wartości null) instancji Player.

PlayerView może być używany do odtwarzania filmów, obrazów i dźwięku. W przypadku odtwarzania wideo renderuje wideo i napisy, w przypadku odtwarzania obrazów – mapy bitowe, a w przypadku odtwarzania dźwięku może wyświetlać grafikę dołączoną jako metadane w plikach audio. Możesz go uwzględnić w plikach układu tak jak każdy inny komponent interfejsu. Na przykład PlayerView można uwzględnić za pomocą tego kodu 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"/>

Powyższy fragment kodu pokazuje, że PlayerView udostępnia kilka atrybutów. Można ich używać do dostosowywania działania widoku oraz jego wyglądu. Większość tych atrybutów ma odpowiadające im metody ustawiające, których można używać do dostosowywania widoku w czasie działania. Dokumentacja PlayerView zawiera szczegółowe informacje o tych atrybutach i metodach ustawiających.

Aby zapewnić użytkownikom większy komfort, rozważ dodanie atrybutu Androida keepScreenOn lub ustawienie blokady uśpienia, jeśli używasz ExoPlayera. Inne działania, które utrzymują urządzenie w stanie aktywności w tle, możesz sprawdzić na stronach dotyczących pracy w tle.

android:keepScreenOn="true"

Gdy widok zostanie zadeklarowany w pliku układu, można go wyszukać w metodzie 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 metodę 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 podrzędnych widoków PlayerView, który zawiera pasek postępu i przyciski sterujące odtwarzaniem. Pamiętaj, że PlayerControlView nie jest przeznaczony do używania jako samodzielny komponent poza PlayerView. Można go dostosować, ustawiając atrybuty w PlayerView (które zostaną przekazane do PlayerControlView) lub podając niestandardowy kontroler z android:id="@id/exo_controller.

Wybieranie typu miejsca

Atrybut surface_type elementu PlayerView umożliwia ustawienie typu miejsca używanego do odtwarzania wideo. Dozwolone wartości to surface_view, texture_view, spherical_gl_surface_view (wartość specjalna do odtwarzania filmów sferycznych ), video_decoder_gl_surface_view (do renderowania wideo za pomocą renderów rozszerzeń) i none (tylko do odtwarzania dźwięku). Więcej informacji o tym, jaki typ platformy wybrać, znajdziesz na stronie Platforma.