目前还没有一种方法可以直接在playerView上设置自定义控制器,您需要在xml中添加控制器并进行充气,才能将其添加到playerview中。
在我的情况下,我通过以下方式添加控制器(假设您不打算在播放视频或填充后更改控制器):
步骤1:只使用playerview和controller定义您的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">
步骤二:将其解压并获取PlayerView。
PlayerView customPlayerView;
View view = LayoutInflater.from(applicationContext).inflate(R.layout.simple_exo_player, null, false);`enter code here`
customPlayerView = (PlayerView) view.getRootView();
由于您并没有提到您想通过编程添加自定义控制器的原因,我假设如下。
- 您想要有多个自定义控制器,并根据视图类型使用它
- 您计划在RecyclerView(或多个视图集)中使用它,其中您想要在代码中动态添加已预定义自定义控制器的Playerview,而不是在xml中定义
以下是您需要执行的操作:
通过更改以下行来创建具有不同控制器的多个Playerview布局文件:
app:controller_layout_id="您的自定义控制器"
现在按照步骤2中所写获取您的自定义Playerview
将其添加到RecyclerView中所需的位置
FrameLayout playArea
playArea = v.findViewById(R.id.exoplayer_frame)
playArea.addView(customPlayerView)
MoreComplexExoPlayerView
。 - pskink