Как сделать закругленный Exoplayer PlayerView в Android - PullRequest
0 голосов
/ 24 января 2019

Привет! Я пытаюсь создать видеопроигрыватель с закругленными углами и использую библиотеку Exoplaye2. Я помещаю PLayerView в закругленный FrameLayout, но не знаю, как сделать сам PlayerView округленным. Я пробовал это , но оно не работает, я даже создал округленный_символьный_разбор и добавил его к фону Playeview, но он не работает (в основном, установка фона для PlayeView вообще не работает ).

Ниже приведен мой простой файл макета:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginBottom="25dp"
    android:layout_weight="4"
    android:gravity="center"
    android:orientation="horizontal"
    android:weightSum="1">

    <FrameLayout
        android:id="@+id/player_view_layout"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.6"
        android:padding="10dp"
        android:background="@drawable/rounded_video_layout">

        <com.google.android.exoplayer2.ui.PlayerView

            android:id="@+id/exoplayer_player_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:fastforward_increment="@integer/exoplayer_playback_fastforward_increment_ms"
            app:resize_mode="fill"
            app:rewind_increment="@integer/exoplayer_playback_rewind_increment_ms"
            app:show_timeout="@integer/exoplayer_show_control_timeout_ms"
            app:use_artwork="true"
            app:use_controller="false">

        </com.google.android.exoplayer2.ui.PlayerView>

    </FrameLayout>

</LinearLayout>

И ниже мой текущий вывод:

enter image description here

Любая помощь будет оценена

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

После долгого поиска я не смог сделать закругленные углы PlayerView или ImageView только в xml (я не думаю, что это возможно).Поэтому я решил сделать это в Java.Ниже приведен код:

playerView.setOutlineProvider(new ViewOutlineProvider() {
            @Override
            public void getOutline(View view, Outline outline) {
                outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 15);
            }
        });

        playerView.setClipToOutline(true);
0 голосов
/ 07 мая 2019

Может быть, вы можете использовать CardView таким образом, а PlayerView surface_type должен быть texture_view.

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="8dp"
    app:cardElevation="0dp">

    <com.google.android.exoplayer2.ui.PlayerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:surface_type="texture_view" 
        app:use_controller="false" />

</android.support.v7.widget.CardView>
0 голосов
/ 25 января 2019

На вашем FrameLayout удалите отступ, затем вызовите clipToOutline() в этом представлении, например,

player_view_layout.clipToOutline()

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

https://developer.android.com/training/material/shadows-clipping

...