Media3 exoplayer 自定义播放器视图控制布局暂停和播放按钮不起作用

问题描述 投票:0回答:1

我刚刚从 exxoplayer2 迁移到 media3,我遇到了自定义播放器控件视图按钮(

eco_play
exo_pause
)的一些问题

我有玩家视图

<androidx.media3.ui.PlayerView
 android:id="@+id/player_view"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:visibility="visible"
 app:controller_layout_id="@layout/player_control_view" />

在我的player_control_view布局中我添加了

<LinearLayout
        android:id="@+id/controlRack"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:orientation="horizontal">

        <ImageButton
            android:id="@id/exo_rew"
            style="@style/PlayerControlButtonBaseStyle.RewButton" />

        <ImageButton
            android:id="@id/exo_play"
            style="@style/PlayerControlButtonBaseStyle.PlayButton"
            android:layout_width="100dp"
            android:layout_marginLeft="@dimen/player_control_play_pause_margin"
            android:layout_marginRight="@dimen/player_control_play_pause_margin" />

        <ImageButton
            android:id="@id/exo_pause"
            style="@style/PlayerControlButtonBaseStyle.PauseButton"
            android:layout_width="100dp"
            android:layout_marginLeft="@dimen/player_control_play_pause_margin"
            android:layout_marginRight="@dimen/player_control_play_pause_margin" />

        <ImageButton
            android:id="@id/exo_ffwd"
            style="@style/PlayerControlButtonBaseStyle.FfwdButton" />
</LinearLayout>

现在,如果我尝试在迁移后运行应用程序,播放和暂停按钮将无法按预期运行,并且它会并排显示在我的图层上。

我尝试为按钮提供 touchEvent 方法,但它根本不起作用。 我不太确定在这里做什么。

因为默认 exoplayer 的 exo_play 和 exo_pause 按钮应该同时出现,而不是并排出现 2 个单独的按钮。

谢谢大家的帮助

android migration exoplayer exoplayer2.x android-media3
1个回答
0
投票

好的,这是 Markdown 中的格式化代码:

问题:将播放和暂停按钮合并为一个按钮

步骤:

1.使用以下代码将按钮合并为一个:

<!-- old code -->
<FrameLayout>

  <ImageButton 
    android:id="@id/exo_play"/>

  <ImageButton  
    android:id="@id/exo_pause"/>

</FrameLayout>
<!-- replace with --> 

<FrameLayout>

  <ImageButton
    android:id="@id/exo_play_pause"/>

</FrameLayout>

2.在值中创建一个drawables.xml文件来覆盖播放和暂停图标:

<!-- drawables.xml -->

<drawable name="exo_styled_controls_pause">
  @drawable/ic_pause
</drawable>

<drawable name="exo_styled_controls_play">
  @drawable/ic_play
</drawable>  

3.注:

不要更改属性名称,仅覆盖图标可绘制对象(ic_pause、ic_play)以自定义播放/暂停图标样式。 enter image description here

如果您还有其他问题,请告诉我!祝你编码愉快。

© www.soinside.com 2019 - 2024. All rights reserved.