我正在尝试将ExoPlayer自定义XML布局文件包含到另一个XML布局文件中。
在运行应用程序时,由于ExoPlayer的“ PlayerView”而出现黑屏。
自定义ExoPlayer xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/exoPlayerView"
android:layout_width="match_parent"
android:layout_height="500dp"/>
<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"/>
</merge>
我包含自定义ExoPlayer布局的XML布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/include"
layout="@layout/exo_player_control_view"
android:layout_width="200dp"
android:layout_height="200dp"
tools:layout_editor_absoluteX="90dp"
tools:layout_editor_absoluteY="287dp">
</include>
当我从ExoPlayer自定义布局中删除“ PlayerView”时,该应用程序将完美运行。显然,“ PlayerView”会引起问题,但我可以弄清楚原因。
在此图片中,您可以看到它可以识别视图。
这是ExoPlayer自定义XML布局文件
尝试此解决方案:
要在整个应用程序中自定义PlaybackControlView的布局,或仅针对某些配置,您可以在应用程序res / layout目录中定义exo_playback_control_view.xml布局文件。这些布局将覆盖ExoPlayer库提供的布局,并且会放大以供PlaybackControlView使用。
此外,要补充一点,您可以像这样:在PlayerView中指定自定义布局:
自定义ExoPlayer xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:visibility="visible">
<ImageView
android:id="@+id/btnClose"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp"
android:layout_marginRight="10dp"
android:background="@drawable/app_gradient_round"
android:padding="8dp"
app:srcCompat="@drawable/ic_close" />
<com.ui.view.MyCardView
android:id="@+id/layoutFHostFront"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true">
<com.google.android.exoplayer2.ui.SimpleExoPlayerView
android:id="@+id/player_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:visibility="visible"
app:controller_layout_id="@layout/layout_exo_player"
app:hide_on_touch="false"
app:show_timeout="0" />
</com.ui.view.MyCardView>
</RelativeLayout>
layout_exo_player.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="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:background="@drawable/bg_music_tool_image"
android:gravity="bottom"
android:orientation="horizontal"
android:visibility="visible">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<ImageButton
android:id="@id/exo_play"
style="@style/ExoMediaButton.Play"
android:layout_width="50dp"
android:layout_height="50dp"
android:tint="#ffffff" />
<ImageButton
android:id="@id/exo_pause"
style="@style/ExoMediaButton.Pause"
android:layout_width="50dp"
android:layout_height="50dp"
android:tint="#ffffff" />
<TextView
android:id="@id/exo_position"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="00.00"
android:textColor="#ffffff"
android:textStyle="bold" />
<com.google.android.exoplayer2.ui.DefaultTimeBar
android:id="@id/exo_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="32dp"
android:layout_weight="1"
android:focusable="false"
app:ad_marker_color="@color/colorPrimaryDark"
app:buffered_color="@color/obaudiopicker_grid_line"
app:played_color="@color/color_yellow"
app:unplayed_color="@color/white" />
<TextView
android:id="@id/exo_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:paddingLeft="4dip"
android:paddingRight="4dip"
android:textColor="#ffffff"
android:textStyle="bold"
tools:text="00.84" />
</LinearLayout>
</LinearLayout>