Видеопросмотр не виден

Мне нужно добавить VideoView к LinearLayout, а затем добавить LinearLayout к ViewFlipper. Вот мой код:

            LinearLayout l = new LinearLayout(this);
            l.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.FILL_PARENT));

            l.setOrientation(LinearLayout.VERTICAL);

                myVideoView = new VideoView(this);
                myVideoView.setVideoPath(files[i].getPath());
                myVideoView.requestFocus();

                myVideoView.setLayoutParams(new LayoutParams(
                        l.getWidth(), l.getHeight()));
                myVideoView.setKeepScreenOn(true)

                myVideoView.start();
                myVideoView.setId(i);
                l.addView(myVideoView);
                vf.addView(l);

Проблема в том, что я вижу весь экран белым и слышу звук видео, потому что видео воспроизводится, но я его не вижу. Почему? В чем проблема?

РЕДАКТИРОВАТЬ :

если я положу

myVideoView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.FILL_PARENT));

это работает, но видео идет не медленно, когда изображение появляется, оно появляется внезапно. Я хочу, чтобы это видео появлялось медленно и исчезало вот так.


person Gabrielle    schedule 07.12.2011    source источник
comment
В качестве примечания: вы не должны использовать FILL_PARENT — это устаревшая метка, поскольку она вводит в заблуждение. Вы должны использовать MATCH_PARENT. Функционально это то же самое, но это более точное описание поведения.   -  person Graeme    schedule 07.12.2011
comment
но MATCH_PARENT доступен только для версий до 2.2, верно?   -  person Gabrielle    schedule 07.12.2011
comment
MATCH_PARENT заменил FILL_PARENT в версии 8. Менее 10 %. всех устройств по-прежнему используют версию ниже 8 developer.android.com/resources/ панель инструментов/   -  person Graeme    schedule 07.12.2011


Ответы (2)


Попробуй это:

LayoutParams layout = new LayoutParams(l.getWidth(), l.getHeight()));

...

l.addView(myVideoView, layout);
person Graeme    schedule 07.12.2011
comment
все та же проблема. Ничего не изменилось. - person Gabrielle; 07.12.2011
comment
и сделайте то же самое для vf.addView(l, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); - person Graeme; 07.12.2011
comment
Подождите, позже в коде вы листаете ViewFlipper? т.е. звонит startFlipping(); - person Graeme; 07.12.2011
comment
когда видео начинает воспроизводиться, я вызываю vf.stopFlipping, а когда оно останавливается, я вызываю startFlipping - person Gabrielle; 07.12.2011
comment
Из того, что я вижу в документации, которая только предотвратит блокировку / затемнение экрана, пока вид виден. Однако ViewFlipper используется для перехода от одного вида к другому, к другому, к другому. Если вы не начнете его листать, он останется пустым (насколько мне известно). Подумайте о том, что вы добавляете свое l представление на вторую страницу книги, а затем не открываете книгу. Попробуйте позвонить startFlipping() после l.addView. - person Graeme; 07.12.2011
comment
Я понятия не имею, почему вы вообще используете флиппер. Просто позвоните startFlipping() и посмотрите, появится ли видео. Не звони stopFlipping(). Должно дать вам начало. - person Graeme; 07.12.2011

прокомментируйте строку myVideoView.setKeepScreenOn(true) и проверьте один раз.

person user493244    schedule 07.12.2011
comment
указали ли вы белый фон для макета или viewfilpper? - person user493244; 07.12.2011
comment
Я не устанавливал фон для макета и вьюфлиппера - person Gabrielle; 07.12.2011
comment
проверьте, выполнив это: сначала добавьте все в свой viewflipper и вызовите myVideoView.start(); - person user493244; 07.12.2011