我使用ExoPlayer在我的Android应用程序上播放音频,SimpleExoPlayerView作为控制器。默认控制器有五个按钮,播放/暂停、前进、后退、下一个和上一个。我的应用程序只使用播放/暂停、前进和后退,所以我想从控制器中删除下一个和上一个按钮,但我找不到如何使用SimpleExoPlayerView。我如何实现这一点?
arknldoa1#
每个按钮都有默认的样式。只需覆盖上一个和下一个按钮的样式,并添加可见性消失。
将以下样式放入您的style.xml中
<style name="ExoMediaButton.Previous"> <item name="android:visibility">gone</item> </style> <style name="ExoMediaButton.Next"> <item name="android:visibility">gone</item> </style>
8e2ybdfx2#
您将需要一个自定义布局exo_playback_control_view.xml文件,默认情况下exoplayer会查找该文件以扩大控件视图。将自定义布局命名为exo_playback_control_view并使用某些x1m3 n1 s非常重要
exo_playback_control_view.xml
exoplayer
exo_playback_control_view
默认控件可在源代码here release-v2或here dev-v2-r2.3.1中找到(确保找到您正在使用的exoplayer版本)
您可以将该文件复制到您的res/layout目录中,并删除不需要的按钮,以下是默认的外观:
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是必需的
id
eqzww0vc3#
在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>
czfnxgou4#
exoplayer的PlayerView类有两个方法可以隐藏这些
playerView.setShowNextButton(showNextPrevButtons) playerView.setShowPreviousButton(showNextPrevButtons)
rpppsulh5#
请注意,按钮的可见性是动态更改的因此,最好将它们的大小设置为零以完全隐藏
<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"/>
8oomwypt6#
你应该hideControl(),我也这样做。1.创建类似于SimpleExoPlayerView的CustomSimpleExoPlerView。1.注解所有具有showControl()的行。1.在xml中设置CustomSimpleExoPlayer。
hideControl()
SimpleExoPlayerView
CustomSimpleExoPlerView
showControl()
CustomSimpleExoPlayer
2ekbmq327#
你也可以用这个,它对我很有效
ExoPlayer player = new ExoPlayer.Builder(context).build(); StyledPlayerView styledPlayerView = viewHolder.binding.idExoPlayerVIew; MediaItem mediaItem = MediaItem.fromUri(message.getVideoUrl()); styledPlayerView.setPlayer(player); styledPlayerView.setShowNextButton(false); styledPlayerView.setShowPreviousButton(false); player.setMediaItem(mediaItem); player.prepare();
fcg9iug38#
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);
这对我有用!
bxjv4tth9#
'com.google.android.exoplayer:exoplayer:2.18.2'简短回答:
'com.google.android.exoplayer:exoplayer:2.18.2'
argType:show_next_button="false" argType:show_previous_button="false"
长回答:您可以用类似的方法隐藏和显示其他按钮。
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:argType="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="true" android:keepScreenOn="true" tools:context=".MainActivity"> <com.google.android.exoplayer2.ui.StyledPlayerView android:id="@+id/playerView" android:layout_width="match_parent" android:layout_height="match_parent" argType:resize_mode="fixed_width" argType:show_buffering="when_playing" argType:show_fastforward_button="false" argType:show_next_button="false" argType:show_previous_button="false" argType:show_rewind_button="false" argType:show_subtitle_button="true" argType:use_artwork="true" argType:use_controller="true"> </com.google.android.exoplayer2.ui.StyledPlayerView> </androidx.constraintlayout.widget.ConstraintLayout>
它起作用了:
9条答案
按热度按时间arknldoa1#
每个按钮都有默认的样式。只需覆盖上一个和下一个按钮的样式,并添加可见性消失。
将以下样式放入您的style.xml中
8e2ybdfx2#
您将需要一个自定义布局
exo_playback_control_view.xml
文件,默认情况下exoplayer
会查找该文件以扩大控件视图。将自定义布局命名为exo_playback_control_view
并使用某些x1m3 n1 s非常重要默认控件可在源代码here release-v2或here dev-v2-r2.3.1中找到(确保找到您正在使用的
exoplayer
版本)您可以将该文件复制到您的
res/layout
目录中,并删除不需要的按钮,以下是默认的外观:媒体上还有一个post,这对定制
exoplayer
有很大的帮助;作者编写了一个自定义控件:请注意,
id
是必需的eqzww0vc3#
在style.xml中尝试以下操作
czfnxgou4#
exoplayer的PlayerView类有两个方法可以隐藏这些
rpppsulh5#
请注意,按钮的可见性是动态更改的
因此,最好将它们的大小设置为零以完全隐藏
8oomwypt6#
你应该
hideControl()
,我也这样做。1.创建类似于
SimpleExoPlayerView
的CustomSimpleExoPlerView
。1.注解所有具有
showControl()
的行。1.在xml中设置
CustomSimpleExoPlayer
。2ekbmq327#
你也可以用这个,它对我很有效
fcg9iug38#
这对我有用!
bxjv4tth9#
'com.google.android.exoplayer:exoplayer:2.18.2'
简短回答:
长回答:您可以用类似的方法隐藏和显示其他按钮。
它起作用了: