目前没有这样的方法可以让您直接在 playerView 上设置自定义控制器。相反,您必须将控制器添加到 xml 中的 playerview 并对其进行充气。
在我的情况下,我为添加控制器做了以下操作(我假设您不打算在播放视频或充气后更改控制器)
第 1 步:仅使用 playerview 和控制器定义您的 xml
//simple_exo_player.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.exoplayer2.ui.PlayerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/playerView"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:rewind_increment="10000"
app:fastforward_increment="10000"
android:background="#000"
app:show_timeout="1000"
app:controller_layout_id="@layout/custom_playback_control"
app:resize_mode="fit">
第 2 步:给它充气并获取 PlayerView
PlayerView customPlayerView;
View view = LayoutInflater.from(applicationContext).inflate(R.layout.simple_exo_player, null, false);`enter code here`
customPlayerView = (PlayerView) view.getRootView();
由于您没有提到要以编程方式添加它的原因,我将假设以下内容。
- 您想拥有多个自定义控制器,并根据视图类型使用它
- 您打算在 recyclerview(或多个视图集)中使用它,而不是使用已经在 xml 中预定义的自定义控制器的 playerview,您想以编程方式添加它
这是你必须做的:
通过更改行创建具有不同控制器的多个playerview布局文件
app:controller_layout_id="你的自定义控制器"
现在获取您在步骤 2 中编写的自定义播放器视图
将其添加到您的回收站视图中的所需位置
FrameLayout playArea;
playArea = v.findViewById(R.id.exoplayer_frame);
playArea.addView(customPlayerView);