SimpleExoPlayerView 自定义以保持背景透明和控件始终可见

SimpleExoPlayerView customization to keep background transparent and controls always visible

我正在使用 ExoPlayer 播放音频歌曲,这是我的 SimpleExoPlayerView 的样子:

<com.google.android.exoplayer2.ui.SimpleExoPlayerView
  android:id="@+id/video_view"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" />

结果:

要求:

  1. 如何将SimpleExoPlayerView背景保持为透明,而不是黑色背景[静止,我得到](见上面截图

  2. 如何让SimpleExoPlayerView始终可见(静止不动,然后消失,直到我再次触摸)

您可以将 show_timeout 设置为 0 以避免控件被隐藏(也可以将 hide_on_touch 设置为 false)

<com.google.android.exoplayer2.ui.SimpleExoPlayerView
           android:id="@+id/video_view"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           app:show_timeout="0"
           app:hide_on_touch="false"
           app:controller_layout_id="@layout/exo_playback_control_view" />

您还可以定义自己的 controller_layout_id 布局,这样您就可以控制背景等(可以使用默认布局作为起点)。

在您的 onCreate() 方法上尝试此代码:

 int resId = getResources().getIdentifier("exo_shutter", "id", getPackageName());
 findViewById(resId).setBackgroundColor(ContextCompat.getColor(this, R.color.transparent));

关于这个问题的 "keep background transparent" 方面,您可能将控件背景的背景设置为透明,但在播放控件视图中仍然看到黑色背景。

原因是......不是你的控件背景是黑色的。

布局中仍然可见/具有黑色背景的该死的 shutterView

要在 XML 中进行更改,请将以下属性添加到您的 PlayerView xml:

app:shutter_background_color="@color/transparent"

要完全删除视图,您可以这样做:

((ViewGroup)shutterView.getParent()).removeView(shutterView);