Android Videoview - Удаление черного пространства по бокам - PullRequest
1 голос
/ 17 октября 2019

enter image description here

Как бы я заполнил весь просмотр видео, чтобы черные ящики исчезли? Я не хочу использовать alignTop, bottom, left, right, потому что, когда на программной клавиатуре настраивается видеовидение, выравнивание препятствует настройке видеовидения.

<RelativeLayout
        android:id="@+id/fragment_video_video_layout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintHeight_percent=".33"
        app:layout_constraintWidth_default="percent"
        app:layout_constraintTop_toTopOf="parent"
        android:gravity="center">

        <VideoView
            android:id="@+id/fragment_video_video_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <ProgressBar
            android:id="@+id/video_progress_bar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"/>

    </RelativeLayout>

Edit1: ______________________________________________________

Вот что происходит, когда я использую выравнивание и перенастройку, когда появляется клавиатура Я НЕ ХОЧУ ЭТОГО

<VideoView
            android:id="@+id/fragment_video_video_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentLeft="true"/>

enter image description here

1 Ответ

2 голосов
/ 17 октября 2019

Я сталкивался с этой проблемой раньше - нет простого, очевидного или нестандартного (android) способа сделать это.

Из того, что я понимаю, что вы пытаетесь сделать, я похож на center_crop на ImageView - правильно? Для этого вы можете использовать внешнюю библиотеку или использовать программное решение с TextureView (см. Более подробные пояснения ниже)

...

ВАРИАНТ A: Использовать внешнюю библиотеку

для этого доступно более одной сторонней библиотеки ..

Я раньше не использовал эту библиотеку, но я бы пошелс этим, если я был в вашей ситуации прямо сейчас.

Использование :

build.gradle

dependencies {
    compile 'com.yqritc:android-scalablevideoview:1.0.4'
}

layout.xml

<com.yqritc.scalablevideoview.ScalableVideoView
  android:id="@+id/video_view"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_marginBottom="100dp"
  app:scalableType="centerCrop"/>

... или используйте другую опцию ..

Я использовал этот ранее. Однако последнее обновление, которое он видел, было 4-6 лет назад, так что да, не уверен, что вы хотите на это положиться, плюс разработчик говорит, что библиотека больше не поддерживается.

Использование :

<com.dd.crop.TextureVideoView
        android:id="@+id/cropTextureView"
        android:layout_width="fill_parent"
        android:layout_height="100dp"/>

, а затем

TextureVideoView cropTextureView = (TextureVideoView) findViewById(R.id.cropTextureView);
cropTextureView.setScaleType(TextureVideoView.ScaleType.CENTER_CROP);
cropTextureView.setDataSource("http://www.w3schools.com/html/mov_bbb.mp4");
cropTextureView.play();

...

ВАРИАНТ Б: Решить проблему программно

, например, с помощью TextureView

Пожалуйста, обратитесь к этому сообщению здесь для всех деталей. В итоге вы рассчитываете необходимый размер и манипулируете видом…

Android VideoView crop_center

...