VideoView долгая загрузка видео, как обработать

242
13 февраля 2018, 07:50

Есть VideoView, в нем по методу setVideoView(Uri.parse("somePathUrlVideo")) загружается видео через интернет, проблема в том, что загрузка очень долгая, несколько секунд, и на это время интерфейс приложения полностью черный(из-за параметров размера videoView math_parent) после загрузку размер автоматически корректируется и начинается проигрывание. Попытка поставить прогресс бар не сработала, я так понял, видео грузится в другом потоке, а после загрузки приходит callback и videoView меняет размер, так как логи после setVideoView появляются моментально. Если размер ставить фиксированный изначально, то он корректируется относительно высоты videoView и в таком случае занимает не всю ширину, что недопустимо для меня. Подскажите, как решить данную проблему.

Answer 1

Пример кода в Activity:

VideoView videoView;
ImageView videoPreview;
ProgressBar videoLoadingProgressBar;
int position = ...;
MediaController mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
videoView.setOnPreparedListener(mp -> {
    mediaController.setAnchorView(videoView);
    mp.seekTo(position);
    videoLoadingProgressBar.setVisibility(View.GONE);
    videoPreview.setVisibility(View.INVISIBLE);
    mp.start();
});
videoView.setVideoURI(Uri.parse("somePathUrlVideo"));
videoLoadingProgressBar.setVisibility(View.VISIBLE);

соответствующая разметка:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <VideoView
        android:id="@+id/video_player_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center" />
    <ImageView
        android:id="@+id/video_player_preview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop" />
    <ProgressBar
        android:id="@+id/video_player_progressbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="gone" />
</FrameLayout>
READ ALSO
Почему бесконечно всплывают окна?

Почему бесконечно всплывают окна?

Реализация игры 2048 на javaЕсть 5 классов: Main - служит для запуска приложения

253
открыть google map на текущем положении пользователя

открыть google map на текущем положении пользователя

День добрыйПри запуске карты мое приложение открывает карту мира

213
Ошибка: Should never call &#39;set&#39; on setterless property

Ошибка: Should never call 'set' on setterless property

Получил ошибку, когда мытался десериализовать ответ в Jackson

221
Ошибка websocket + spring + weblogic 12.2.1.3

Ошибка websocket + spring + weblogic 12.2.1.3

При переходе на новую версию weblogic (122

473