画面の下半分にテキストが表示された状態で、アクティビティの上半分を縦向きで占めるPlayerView
があります。
コントローラが必要ですビデオの下にビデオコンテンツを重ねずに(常に表示されます)。デフォルトでは、ユーザーが動画に触れると、コントローラーが動画の下部に表示され、動画の下部が覆われます。私の場合、ビデオコンテンツと交差しないように、コントローラーをビデオの下に固定する必要があります。
私はSimpleExoPlayer
およびPlayerView
APIを試してみましたが、それを行う方法が見つかりませんでした。
質問: ExoPlayerでビデオの下にコントローラーを配置するにはどうすればよいですか?
レイアウトは次のようになります。
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<com.google.Android.exoplayer2.ui.PlayerView
Android:id="@+id/video_view"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"/>
<TextView
Android:id="@+id/text"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentStart="true"
Android:layout_below="@id/video_view"
Android:scrollbars="vertical" />
</RelativeLayout>
これにより、コントロールが画面の下部にプッシュされます。
<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">
<com.google.Android.exoplayer2.ui.PlayerView
Android:id="@+id/video_view"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:use_controller="false" />
<com.google.Android.exoplayer2.ui.PlayerControlView
Android:id="@+id/controls"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_below="@id/video_view"
app:show_timeout="0" />
</RelativeLayout>
次にJavaで:
PlayerView videoView = findViewById(R.id.video_view);
PlayerControlView controls = findViewById(R.id.controls);
controls.setPlayer(videoView);
編集:@ RashimiGautamからの提案に対する私の回答を変更
@ Pierreによる回答を参照してください。
また、コントローラを上記のPlayerView
から削除するには、player.showController(false)
をJavaファイルに書き込むことにより、@id/video_view
を使用します。
xmlでapp:use_controller:false
を使用することもできます。
そのため、コントローラが上にない唯一のビデオになります。そして、それを新しいコントローラーにリンクします。その場合、ビデオの下部にある@id/controls
です。
これはあなたにアイデアを与えるかもしれませんし、あなたにも コントロールをオーバーライドしようとしました ?
例として、再生コントロールをビューの中央に配置された再生/一時停止ボタンのみで構成するとします。これは、exo_playback_control_view.xml
アプリケーションのres/layoutディレクトリにあるファイル。
<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/exo_play
および@id/exo_pause
は、ExoPlayerライブラリによって定義された標準のIDです。子ビューを識別してプレーヤーにバインドし、適切な方法で更新できるようにするには、標準IDを使用する必要があります。各ビューの標準IDの完全なリストは、Javadocの PlaybackControlView および SimpleExoPlayerView にあります。各標準IDの使用はオプションです。
https://medium.com/google-exoplayer/customizing-exoplayers-ui-components-728cf55ee07a