以编程方式为SimpleExoPlayerView设置自定义控制器

时间:2017-11-03 05:45:57

标签: android exoplayer exoplayer2.x

通过XML,我们可以轻松地将自定义UI控制器( controller_layout_id )添加到 SimpleExoPlayerView ,如下所示:

    <com.google.android.exoplayer2.ui.SimpleExoPlayerView
        android:id="@+id/exo_player_view"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        app:controller_layout_id="@layout/player_controls"/>

有没有办法以编程方式添加此类布局?

2 个答案:

答案 0 :(得分:0)

根据javadoc,我们没有相应的方法。 With Body

  • controller_layout_id - 指定子PlaybackControlView要充气的布局资源的ID。有关详细信息,请参见下文。
  • 对应方法:无
  • 默认值:R.id.exo_playback_control_view

而且我们也不能继承SimpleExoPlayerView,因为它的定义是 final

您想通过编程方式添加什么?就是这样吗?

答案 1 :(得分:0)

目前没有这样的方法可以让您直接在playerView上设置自定义控制器。相反,您必须将控制器添加到xml中的playerview并对其进行充气。

就我而言,我做了以下操作来添加控制器(我想,您不打算在播放视频时或夸大视频后更换控制器)

  

第1步:仅使用playerview和controller定义您的xml

(?<=\S)

  

第2步:将其充气并获得PlayerView

 //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">

由于您没有提到要以编程方式添加它的原因,因此我假设以下内容。

  1. 您想拥有多个自定义控制器,并根据视图类型使用它
  2. 您打算在recyclerview(或多视图集)中使用它,而不是使用已经在xml中预定义了自定义控制器的playerview,而是要以编程方式添加它

这是您要做的:

通过更改行来创建具有不同控制器的PlayerView的多个布局文件

  

app:controller_layout_id =“您的自定义控制器”

现在获得第2步中编写的自定义播放器视图

将其添加到您需要的回收站视图中

 PlayerView customPlayerView;
 View view = LayoutInflater.from(applicationContext).inflate(R.layout.simple_exo_player, null, false);`enter code here`   
 customPlayerView = (PlayerView) view.getRootView();