Wprowadzenie do interfejsu użytkownika opartego na widokach

Dodawanie zależności

Kotlin

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

Groovy

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

PlayerView

Najważniejszym komponentem 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 dołączania i odłączania instancji Player (przez przekazywanie null).

PlayerView można używać do odtwarzania filmów, obrazów i plików audio. W przypadku odtwarzania wideo renderuje wideo i napisy, w przypadku odtwarzania obrazów – mapy bitowe, a także może wyświetlać okładki dołączone jako metadane w plikach audio. Możesz go uwzględnić w plikach układu tak samo jak każdy inny komponent interfejsu. Na przykład element PlayerView może być zawarty w tym kodzie 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"/>

Fragment powyżej pokazuje, że PlayerView udostępnia kilka atrybutów. Atrybuty te można wykorzystać do dostosowania działania widoku, a także jego wyglądu. Większość tych atrybutów ma odpowiednie metody ustawiające, których można używać do dostosowywania widoku w czasie działania programu. Więcej informacji o tych atrybutach i metodach ustawiających znajdziesz w PlayerViewdokumentacji.

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

android:keepScreenOn="true"

Po zadeklarowaniu widoku w pliku układu można go wyszukać w metodzie onCreate działania:

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: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 PlayerView podrzędnych widoków, który zawiera pasek postępu i przyciski sterujące odtwarzaniem. Pamiętaj, że element PlayerControlView nie jest przeznaczony do używania jako samodzielny komponent poza elementem 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.

Wybierz typ powierzchni

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