如何在Android中从SimpleExoPlayerView中删除下一步和上一步按钮

2exbekwf  于 2023-01-24  发布在  Android
关注(0)|答案(9)|浏览(308)

我使用ExoPlayer在我的Android应用程序上播放音频,SimpleExoPlayerView作为控制器。默认控制器有五个按钮,播放/暂停、前进、后退、下一个和上一个。我的应用程序只使用播放/暂停、前进和后退,所以我想从控制器中删除下一个和上一个按钮,但我找不到如何使用SimpleExoPlayerView。我如何实现这一点?

arknldoa

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>
8e2ybdfx

8e2ybdfx2#

您将需要一个自定义布局exo_playback_control_view.xml文件,默认情况下exoplayer会查找该文件以扩大控件视图。将自定义布局命名为exo_playback_control_view并使用某些x1m3 n1 s非常重要

默认控件可在源代码here release-v2here 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必需的

eqzww0vc

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>
czfnxgou

czfnxgou4#

exoplayer的PlayerView类有两个方法可以隐藏这些

playerView.setShowNextButton(showNextPrevButtons)
    playerView.setShowPreviousButton(showNextPrevButtons)
rpppsulh

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

8oomwypt6#

你应该hideControl(),我也这样做。
1.创建类似于SimpleExoPlayerViewCustomSimpleExoPlerView
1.注解所有具有showControl()的行。
1.在xml中设置CustomSimpleExoPlayer

2ekbmq32

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();
fcg9iug3

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);

这对我有用!

bxjv4tth

bxjv4tth9#

    • SimpleExoPlayer已弃用。您应该在此版本中使用StyledPlayerView**:

'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>

它起作用了:

相关问题