新增依附元件
Kotlin
implementation("androidx.media3:media3-ui:1.6.0")
Groovy
implementation "androidx.media3:media3-ui:1.6.0"
PlayerView
其中最重要的元件是 PlayerView
,這是用於媒體播放的檢視畫面。PlayerView
會在播放期間顯示影片、圖片、字幕和專輯封面,以及播放控制項。
PlayerView
提供 setPlayer()
方法,可用於附加和卸除 (透過傳遞 null
) Player
例項。
PlayerView
可用於播放影片、圖片和音訊。在影片播放的情況下,它會算繪影片和字幕,在圖片播放的情況下則會算繪位圖,並可顯示音訊檔案中以中繼資料形式加入的圖片。您可以像其他 UI 元件一樣,將其納入版面配置檔案中。舉例來說,您可以透過以下 XML 加入 PlayerView
:
<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 方法。
在版面配置檔案中宣告檢視區塊後,即可在活動的 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
(僅限音訊播放)。如要進一步瞭解應選擇哪種途徑類型,請參閱「途徑」頁面。