Intereting Posts
Кнопки Eclipse, такие как «Ввод, выключение, возобновление и т. Д.», Не работает В чем смысл PicturePileLayerContent (…): Предупреждение: картина PicturePile без содержимого Принудительный ввод цифр при просмотре веб-сайта на Android и iOS Создать слайдер для изменения объема Android? Ошибка камеры 100 Как записать звук с помощью Bluetooth-гарнитуры Как вставить клип YouTube в WebView на Android Удалить строку SQLite с предложением where с несколькими оговорками Когда Android делает свой недавний скриншот приложений? Как вы используете пользовательские скины Datepicker и Timepicker? Здание с кордовой для android создает неправильный код версии Начните свое приложение с genymotion 25.1.0 Android-поддержка lib нарушает потрясающее поведение Обновление списков изображений ListView для Android ListView с использованием AsyncTask Причины Просмотр утилизации RecognizerIntent: как добавить пакет в ожидающее намерение

Проблемная проблема VideoView

Я сталкиваюсь с странной проблемой мерцания с помощью VideoView . Когда активность начинается, она вызывает незначительное мерцание дроби на секунду. Затем начинается видео. Он показывает две черные линии сверху и снизу видео. Смотрите снимок ниже.

Проверить выстрел

Я тестировал свое приложение на двух устройствах

1) Samsung n-8000 (планшет)

2) Lenovo a-800

video.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" android:gravity="center"> <VideoView android:id="@+id/vvSplash" android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="#00ffffff"> </VideoView> </LinearLayout> 

Код мероприятия:

 private VideoView vd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.video); vd = (VideoView) findViewById(R.id.vvSplash); playVideo(); } private void playVideo() { Uri uri = Uri.parse("android.resource://" + getPackageName() +"/"+ R.raw.intro); vd.setVideoURI(uri); vd.setMediaController(null); vd.start(); } 

Любая помощь будет оценена по достоинству. Спасибо.

Solutions Collecting From Web of "Проблемная проблема VideoView"

Как смешно, как это звучит, но ответ здесь:

  • Видеофрагмент внутри фрагмента вызывает черный экран
  • SurfaceView мигает черным цветом при загрузке

Я повторяю это решение, к сожалению, тем, кто узнал:

 <SurfaceView android:layout_width="0px" android:layout_height="0px" android:visibility="gone" /> 

ОЧЕНЬ ВАЖНО, что вы добавляете поверхностный вид в корневой вид в своей деятельности, а не в непосредственный родитель. В противном случае это не сработает.

Я также столкнулся с такой же проблемой, но решил ее, изменив параметр макета видеоизображения из содержимого обложки в соответствии с родительским. Также вам нужно удалить фоновое свойство просмотра видео из XML. Я надеюсь, что это сработает для вас

Для людей в будущем: эта уродливая ошибка, похоже, решена в Зефире. В моей работе мы развиваемся с помощью Xamarin (так, в основном, все взгляды добавляются программно). У нас есть куча тестовых устройств, и я в основном работал с устройством Marshmallow, поэтому я никогда не замечал этого черного мерцания при создании страницы, над которой я работал. После окончательного тестирования с помощью устройства Lollipop я заметил это мерцание.

К сожалению, у меня нет решения. Нам нужно, чтобы наше приложение было как можно более кросс-платформенным, поэтому использование макета xml не рекомендуется / грубо.

Просто удалите следующую строку из своего xml.

 android:background="#00ffffff" 

Это поможет вам 🙂

Для тех, кто все еще сталкивается с проблемой и не понимает, как использовать приведенный выше ответ. Он просто просто копирует этот код и вставляет его в основной макет действия, который вы используете для просмотра videoview в главном (первом) макете.

 <SurfaceView android:layout_width="0px" android:layout_height="0px" android:visibility="gone" /> 

в моем случае

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/Mainframlayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/facebookbgcolor" > <SurfaceView android:layout_width="0px" android:layout_height="0px" android:visibility="gone" /> .....rest of the layout 

Адаптировало решение на основе xml от https://stackoverflow.com/a/27307286/38557, чтобы вместо этого использовать Java-код. Поместите это в onCreateView () Фрагмента, прежде чем раздувать макет:

 // Add a SurfaceView to prevent flickering when the video is loaded later. SurfaceView surfaceView = new SurfaceView(getActivity()); surfaceView.setVisibility(View.GONE); container.addView(surfaceView, new ViewGroup.LayoutParams(0, 0)); 

Он делает то же самое и может использоваться, когда вы не можете или не хотите изменять XML-файлы.