開始使用以 View 為基礎的 UI

新增依附元件

Kotlin

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

Groovy

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

PlayerView

最重要的元件是 PlayerView,這是用於媒體播放的檢視畫面。PlayerView 會在播放期間顯示影片、圖片、字幕和專輯封面,以及播放控制項。

PlayerView 具有 setPlayer() 方法,可用於附加和卸離 (透過傳遞 null) Player 執行個體。

PlayerView 可用於播放影片、圖片和音訊。在播放影片時,它會轉譯影片和字幕;在播放圖片時,它會轉譯點陣圖;在播放音訊檔案時,它會顯示音訊檔案中繼資料內含的圖片。您可以像其他 UI 元件一樣,將其加入版面配置檔案中。例如,PlayerView 可包含下列 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"/>

上述程式碼片段說明 PlayerView 提供多個屬性。這些屬性可用來自訂檢視畫面的行為,以及外觀和風格。這些屬性大多有對應的 setter 方法,可用於在執行階段自訂檢視畫面。PlayerView 說明文件會更詳細地列出這些屬性和 setter 方法。

如要提供更舒適的使用者體驗,建議您新增 keepScreenOn Android 屬性,或設定 Wake Lock (如果您使用 ExoPlayer)。您可以在背景工作頁面中,調查讓裝置保持喚醒狀態的其他動作。

android:keepScreenOn="true"

在版面配置檔案中宣告檢視畫面後,即可在活動的 onCreate 方法中查詢:

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);
}

播放器初始化後,可以呼叫 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 是 PlayerView 個子檢視畫面之一,其中包含進度列和控制播放的按鈕。請注意,PlayerControlView 不適合做為 PlayerView 以外的獨立元件使用。您可以透過在 PlayerView 上設定屬性 (會傳遞至 PlayerControlView) 或提供 android:id="@id/exo_controller 的自訂控制器,來自訂這個屬性。

選擇表面類型

PlayerView 的 surface_type 屬性可讓您設定用於影片播放的介面類型。允許的值為 surface_view、texture_view、spherical_gl_surface_view (球形影片播放的特殊值)、video_decoder_gl_surface_view (使用擴充功能轉譯器轉譯影片) 和 none (僅限音訊播放)。如要進一步瞭解如何選擇介面類型,請參閱「介面」頁面。