Through XML we can easily add custom UI controller (controller_layout_id) to SimpleExoPlayerView, like this:
<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"/>
Is there a way to add such layout programmatically?
Customizing ExoPlayer Attributes The duration is specified in milliseconds. Use zero to disable the rewind button. fastforward_increment — This was the attribute used to specify the duration of the forward applied when the user taps the forward button. The duration is specified in milliseconds.
Screenshot: The YouTube Android app, which uses ExoPlayer as its video player. ExoPlayer is an app-level media player built on top of low-level media APIs in Android. It is an open source project used by Google apps, including YouTube and Google TV.
There is no such method at this moment which allows you to directly set a custom controller on playerView. instead you have to add your controller to playerview in xml and the inflate it.
In my case I did the following for adding the controller (I assume, you are not planning to change controller while playing the video or after inflating it)
Step 1: Define your xml with just playerview and controller
//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">
Step 2: Inflate it and get the PlayerView
PlayerView customPlayerView;
View view = LayoutInflater.from(applicationContext).inflate(R.layout.simple_exo_player, null, false);`enter code here`
customPlayerView = (PlayerView) view.getRootView();
As you haven't mentioned the reason why you wanted to add it programmatically, I will assume the following.
here's what you have to do:
create multiple layout files of playerview with different controllers by changing the line
app:controller_layout_id="your custom controller"
now get your custom playerview as written in step 2
add it to the your recyclerview at required position
FrameLayout playArea;
playArea = v.findViewById(R.id.exoplayer_frame);
playArea.addView(customPlayerView);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With