我使用ExoPlayer在我的Android应用程序上播放音频,并使用SimpleExoPlayerView作为控制器。默认控制器有五个按钮,播放/暂停,前进,后退,下一个和上一个。我的应用程序只使用播放/暂停,前进和后退,所以我想从控制器中删除下一个和上一个按钮,但我无法找到如何使用SimpleExoPlayerView。我如何实现这一目标?
答案 0 :(得分:17)
每个按钮都有默认样式。只需覆盖上一个和下一个按钮的样式,并添加可见性。
在style.xml中添加以下样式
<style name="ExoMediaButton.Previous">
<item name="android:visibility">gone</item>
</style>
<style name="ExoMediaButton.Next">
<item name="android:visibility">gone</item>
</style>
答案 1 :(得分:11)
您需要一个自定义布局exo_playback_control_view.xml
文件,这是exoplayer
默认查找控件视图的内容。 自定义布局的名称为exo_playback_control_view
且使用了某些id
可以在源代码here release-v2或here dev-v2-r2.3.1 中看到默认控件(确保找到您正在使用的exoplayer
版本)
您可以将该文件复制到res/layout
目录中,并删除不需要的按钮,默认情况如下:
<ImageButton android:id="@id/exo_prev"
style="@style/ExoMediaButton.Previous"/>
<ImageButton android:id="@id/exo_rew"
style="@style/ExoMediaButton.Rewind"/>
<ImageButton android:id="@id/exo_play"
style="@style/ExoMediaButton.Play"/>
<ImageButton android:id="@id/exo_pause"
style="@style/ExoMediaButton.Pause"/>
<ImageButton android:id="@id/exo_ffwd"
style="@style/ExoMediaButton.FastForward"/>
<ImageButton android:id="@id/exo_next"
style="@style/ExoMediaButton.Next"/>
<小时/> 媒体上还有post,这对自定义
exoplayer
有很大帮助;作者写了一个自定义控件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageButton android:id="@id/exo_play"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:background="#CC000000"
style="@style/ExoMediaButton.Play"/>
<ImageButton android:id="@id/exo_pause"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:background="#CC000000"
style="@style/ExoMediaButton.Pause"/>
</FrameLayout>
请注意id
必需
答案 2 :(得分:3)
在 style.xml 中尝试以下内容
<style name="ExoMediaButton.Previous">
<item name="android:layout_height">0dp</item>
<item name="android:layout_width">0dp</item>
</style>
<style name="ExoMediaButton.Next">
<item name="android:layout_height">0dp</item>
<item name="android:layout_width">0dp</item>
</style>
答案 3 :(得分:0)
请注意,按钮的可见性已动态更改
因此最好将它们的大小设置为零以完全隐藏
<ImageButton android:id="@id/exo_prev"
android:layout_width="0dp"
android:layout_height="0dp"
style="@style/ExoMediaButton.Previous"
android:visibility="gone"/>
<ImageButton android:id="@id/exo_rew"
style="@style/ExoMediaButton.Rewind"/>
<ImageButton android:id="@id/exo_shuffle"
style="@style/ExoMediaButton.Shuffle"
android:visibility="gone"/>
<ImageButton android:id="@id/exo_repeat_toggle"
style="@style/ExoMediaButton"
android:visibility="gone"/>
<ImageButton android:id="@id/exo_play"
style="@style/ExoMediaButton.Play"/>
<ImageButton android:id="@id/exo_pause"
style="@style/ExoMediaButton.Pause"/>
<ImageButton android:id="@id/exo_ffwd"
style="@style/ExoMediaButton.FastForward"/>
<ImageButton android:id="@id/exo_next"
android:layout_width="0dp"
android:layout_height="0dp"
style="@style/ExoMediaButton.Next"
android:visibility="gone"/>
<ImageButton android:id="@+id/exo_fullscreen"
android:src="@drawable/fullscreen"
style="@style/ExoMediaButton"/>
<ImageButton android:id="@+id/exo_vr"
style="@style/ExoMediaButton"
android:visibility="gone"/>
答案 4 :(得分:0)
exoplayer 的 PlayerView 类有两种方法可以隐藏它们
playerView.setShowNextButton(showNextPrevButtons)
playerView.setShowPreviousButton(showNextPrevButtons)