Intereting Posts
Как удалить прописку или маржу в Tabwidget в Android? Сканер штрих-кода ZXing в пользовательском макете в фрагменте Вызывается callback afterTextChanged () без фактического изменения текста В чем разница между Eclipse «Импорт» и «Создать проект из существующего источника» для проектов Android? ProGuard: невозможно найти ссылочный класс com.google.android.gms.R Запретить диалог (или DialogFragment) закрываться, когда приложение переходит в фоновый режим Android: setContentView и LayoutInflater Бесконечный цикл активности при переключении Bluetooth Пользовательская строка или заголовок пользовательского агента без изменения кордовы libs Android. Как я могу «запустить» или «инициализировать» фрагмент из активности? GetHeight возвращает 0 для всех объектов Android UI Хотите узнать целевой URL, когда вызывается WebChromeClient # onCreateWindow Обновление Android Studio -Error: не удалось запустить сборку с использованием распределения Gradle Изменение фонового изображения Android с изменением в / из анимации Android.support.v7.internal.widget.ActionBarOverlayLayout не может быть создан

Проблемная проблема 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-файлы.