Android 如何从 SimpleExoPlayerView 中删除下一个和上一个按钮
How to remove Next and Previous button from SimpleExoPlayerView in Android
我使用 ExoPlayer 在我的 Android 应用程序上播放音频,并将 SimpleExoPlayerView 作为控制器。默认控制器有五个按钮,Play/Pause、前进、后退、下一个和上一个。我的应用程序仅使用 Play/Pause、前进和后退,因此我想从控制器中删除“下一个”和“上一个”按钮,但我找不到如何使用 SimpleExoPlayerView 执行此操作。我该如何实现?
您需要一个自定义布局 exo_playback_control_view.xml
文件,exoplayer
默认情况下会查找该文件来展开控件视图。 将自定义布局命名为 exo_playback_control_view
并且使用某些 id
很重要
默认控件可以在源代码中看到here release-v2 or 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"/>
medium上还有一个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
是 必需的
你应该hideControl()
,我也做了
- 像
SimpleExoPlayerView
一样创建 CustomSimpleExoPlerView
。
- 评论所有行有
showControl()
.
- 在xml中设置
CustomSimpleExoPlayer
。
每个按钮都有默认样式。只需覆盖 Previous 和 Next 按钮的样式并添加可见性即可。
将以下样式放入您的 style.xml
<style name="ExoMediaButton.Previous">
<item name="android:visibility">gone</item>
</style>
<style name="ExoMediaButton.Next">
<item name="android:visibility">gone</item>
</style>
请注意按钮的可见性是动态变化的
所以最好将它们的大小设置为零以完全隐藏
<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"/>
在 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>
exoplayer 的 PlayerView class 有两种隐藏方式
playerView.setShowNextButton(showNextPrevButtons)
playerView.setShowPreviousButton(showNextPrevButtons)
StyledPlayerView playerView = view.findViewById(R.id.videoPlayer);
playerView.findViewById(R.id.exo_prev).setVisibility(View.GONE);
playerView.findViewById(R.id.exo_next).setVisibility(View.GONE);
这对我有用!
我使用 ExoPlayer 在我的 Android 应用程序上播放音频,并将 SimpleExoPlayerView 作为控制器。默认控制器有五个按钮,Play/Pause、前进、后退、下一个和上一个。我的应用程序仅使用 Play/Pause、前进和后退,因此我想从控制器中删除“下一个”和“上一个”按钮,但我找不到如何使用 SimpleExoPlayerView 执行此操作。我该如何实现?
您需要一个自定义布局 exo_playback_control_view.xml
文件,exoplayer
默认情况下会查找该文件来展开控件视图。 将自定义布局命名为 exo_playback_control_view
并且使用某些 id
很重要
默认控件可以在源代码中看到here release-v2 or 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"/>
medium上还有一个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
是 必需的
你应该hideControl()
,我也做了
- 像
SimpleExoPlayerView
一样创建CustomSimpleExoPlerView
。 - 评论所有行有
showControl()
. - 在xml中设置
CustomSimpleExoPlayer
。
每个按钮都有默认样式。只需覆盖 Previous 和 Next 按钮的样式并添加可见性即可。
将以下样式放入您的 style.xml
<style name="ExoMediaButton.Previous">
<item name="android:visibility">gone</item>
</style>
<style name="ExoMediaButton.Next">
<item name="android:visibility">gone</item>
</style>
请注意按钮的可见性是动态变化的
所以最好将它们的大小设置为零以完全隐藏
<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"/>
在 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>
exoplayer 的 PlayerView class 有两种隐藏方式
playerView.setShowNextButton(showNextPrevButtons)
playerView.setShowPreviousButton(showNextPrevButtons)
StyledPlayerView playerView = view.findViewById(R.id.videoPlayer);
playerView.findViewById(R.id.exo_prev).setVisibility(View.GONE);
playerView.findViewById(R.id.exo_next).setVisibility(View.GONE);
这对我有用!