14

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());

問題を解決しますが、成功しませんでした。ビデオの一部が画面から切り取られていても、ビデオで画面を埋める方法はありますか?

4

4 に答える 4

8

を取り除くことができますcom.google.android.exoplayer.AspectRatioFrameLayout

次に、FrameLayout幅と高さのある単純なものを に置きmatch_parentます。

SurfaceViewwidth と height = のままにする必要があることに注意してくださいmatch_parent

説明:AspectRatioFrameLayout実際のビデオ比率 (幅、高さ、pixelRatio に基づいて計算) に従って、ビューの正しい高さを設定しています。これを望まない場合でも、Exoplayer はSurfaceView以前と同じようにビューを表示できます。そうSurfaceViewでない場合、@Overrideアスペクト比はありません。

于 2015-11-18T09:02:17.973 に答える
2

xml で次の行を使用するだけです。それは完璧に動作します。

app:resize_mode="fill"
于 2019-10-03T06:16:40.247 に答える