ExoPlayer2のすべてのコントローラー(スタートボタン、一時停止など)を非表示にして、それらが存在せず、画面が常にいっぱいであった方法。
simpleExoPlayerView.setUseController(true)
メソッドがありました。
しかし、それはプレイヤーを無効にします...
public void setUseController (boolean useController) {
this.useController = useController;
if (useController) {
controller.setPlayer(player);
} else {
controller.hide();
controller.setPlayer(null);
}
}
これらのコンポーネントを非表示または削除する方法は?
ExoPlayer-r2.2.0を使用
videoView.hideController();
videoView.setControllerVisibilityListener(new PlaybackControlView.VisibilityListener() {
@Override
public void onVisibilityChange(int i) {
if(i == 0) {
videoView.hideController();
}
}
});
または
レイアウトのapp:use_controller = "false"
<...
xmlns:app="http://schemas.Android.com/apk/res-auto"
...>
<com.google.Android.exoplayer2.ui.SimpleExoPlayerView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:use_controller="false"/>
単にこれを使用する
exoPlayerView.setUseController(false);
exoPlayerView.setUseController(false);
この問題を解決するために、私はこれをしました:
Kotlinのコード
simpleExoPlayerView.setControllerVisibilityListener { visibility ->
val layout = activity.findViewById<LinearLayout>(R.id.ll_customPlayBackControlView)
if (layout.tag != "IN_ANIMATION") {
when (visibility) {
View.GONE -> {
layout.tag = "IN_ANIMATION"
ex_fragmentVideoView.showController()
layout.animate().alpha(0F).setDuration(450L).withEndAction({ ex_fragmentVideoView.hideController(); layout.tag = "" }).start()
}
View.VISIBLE -> {
layout.animate().alpha(1F).setDuration(450L).start()
}
}
}
}
PlayerViewにはhideControllerメソッドがあります。次のように呼び出すことができます。
mPlayerView.hideController();
controller.setVisibility(View.GONE);
controller.setVisibility(View.INVISIBLE);
いずれかを使用して、可視性を設定します。 Android Documentation: Link
コトリン:
exoPlayerView.useController = false
Java:
exoPlayerView.setUseController(false);