ExoPlayerを使用してビデオを再生するアクティビティがあります。全画面表示にすると、デバイスのアスペクト比がビデオのアスペクト比と同じでない限り、ビデオの上部と下部に小さな黒いバーが表示されます。
これはレイアウトがどのように見えるかです:
<com.google.Android.exoplayer.AspectRatioFrameLayout
Android:id="@+id/video_frame"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_alignParentRight="true"
Android:layout_alignParentBottom="true">
<SurfaceView Android:id="@+id/surface_view"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="fill_vertical"/>
<View Android:id="@+id/shutter"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@Android:color/black"/>
</com.google.Android.exoplayer.AspectRatioFrameLayout>
私はそれを望んでいた
aspectRatioFrameLayout.setAspectRatio(mVideo.getAspectRatio());
問題を解決しますが、私は成功しませんでした。ビデオの一部が画面から切り取られた場合でも、画面をビデオで埋める方法はありますか?
削除 the com.google.Android.exoplayer.AspectRatioFrameLayout
を実行できます。
次に、match_parent
に幅と高さのある単純なFrameLayout
を配置します。
SurfaceView
は幅と高さ= match_parent
のままである必要があります。
説明:AspectRatioFrameLayout
は、実際のビデオ比率(幅、高さ、pixelRatioに基づいて計算)に従ってビューの正しい高さを設定しています。これを望まない場合でも、Exoplayerは以前と同じようにSurfaceView
にビューを表示できます。 SurfaceView
が@Override
でない場合、アスペクト比はありません。
画面をビデオで埋める最速の方法があります。 _SimpleExoPlayerView.Java
_クラスに移動し、resizeMode
を_AspectRatioFrameLayout.RESIZE_MODE_FIT
_から_AspectRatioFrameLayout.RESIZE_MODE_FILL
_に変更します。 _RESIZE_MODE_FILL
_は指定されたアスペクト比を無視します。 ExoPlayerをプロジェクトのモジュールとして使用する場合は、この方法を使用します。
[〜#〜] updated [〜#〜] ExoPlayerをライブラリとして使用する場合、setResizeMode()
へのメソッドがあります。ビューで_AspectRatioFrameLayout.RESIZE_MODE_FILL
_に設定するだけです:simpleExoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL)
以上です。
これは、SimpleExoPlayerView
を使用する場合にもXMLで実行できます。
動画のアスペクト比を維持するにはapp:resize_mode="zoom"
を追加し、アスペクト比を気にしない場合はapp:resize_mode="fill"
を追加します。
<com.google.Android.exoplayer2.ui.SimpleExoPlayerView
Android:id="@+id/video"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:resize_mode="zoom" />
単にxmlで以下の行を使用します。それは完全に動作します。
app:resize_mode="fill"