Есть VideoView, в нем по методу setVideoView(Uri.parse("somePathUrlVideo")) загружается видео через интернет, проблема в том, что загрузка очень долгая, несколько секунд, и на это время интерфейс приложения полностью черный(из-за параметров размера videoView math_parent) после загрузку размер автоматически корректируется и начинается проигрывание. Попытка поставить прогресс бар не сработала, я так понял, видео грузится в другом потоке, а после загрузки приходит callback и videoView меняет размер, так как логи после setVideoView появляются моментально. Если размер ставить фиксированный изначально, то он корректируется относительно высоты videoView и в таком случае занимает не всю ширину, что недопустимо для меня. Подскажите, как решить данную проблему.
Пример кода в 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>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Реализация игры 2048 на javaЕсть 5 классов: Main - служит для запуска приложения
День добрыйПри запуске карты мое приложение открывает карту мира
Получил ошибку, когда мытался десериализовать ответ в Jackson