Android VideoView: просмотр видео намного темнее в диалоговом окне

Привет всем, у меня проблема с встраиванием видео в диалоговое окно.

все работает нормально, за исключением того, что видео, отображаемое в диалоговом окне, намного темнее, чем при отображении в остальной части активности.

Любые идеи ?

вот какой-то код

button1main.setOnClickListener(new OnClickListener() {

                public VideoView videoView = null;
                @Override
                public void onClick(View v) {
                    //set up dialog
                    Dialog dialog = new Dialog(CustomDialog.this);
                    dialog.setContentView(R.layout.maindialog);
                    //dialog.setTitle("This is my custom dialog box");
                    dialog.setCancelable(true);


                    this.videoView = (VideoView) dialog.findViewById(R.id.video);
                    VideoPlayer vp = new VideoPlayer(this.videoView, null);
                    vp.playVideo();

                    //set up button
                    Button button = (Button) dialog.findViewById(R.id.Button01);
                    button.setOnClickListener(new OnClickListener() {
                    @Override
                        public void onClick(View v) {
                            finish();
                        }
                    });
                    //now that the dialog is set up, it's time to show it    
                    dialog.show();
                }
            });

person Jason Rogers    schedule 09.03.2011    source источник
comment
Есть ли шанс, что вы решили эту проблему и хотели бы поделиться своим решением?   -  person taymless    schedule 15.04.2011
comment
О да, извините, я так занят своим проектом, что забыл обновить, проверьте мой ответ   -  person Jason Rogers    schedule 15.04.2011


Ответы (5)


кажется, что VideoView затемняется, потому что он создается за окном. Решение Джейсона Роджерса работает, но означает, что область за диалогом не будет затемнена.

я использовал

mVideoView.setZOrderOnTop(true);

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

person spatialist    schedule 05.05.2011
comment
Теперь я хочу добавить изображение кнопки воспроизведения поверх этого mVideoView и показать и скрыть его при проверке isPlaying(). Как я могу поместить это изображение поверх него? Любая идея? - person Yawar; 20.10.2014
comment
это просто делает мой видеопросмотр белым и ничего не показывает - person Mahdi; 10.07.2015
comment
@Kenji да .. У меня это не сработало .. Видео не показывает .. :( - person Chintan Soni; 24.05.2016

Я действительно нашел решение этого (или, по крайней мере, в моем случае)

кажется, это ошибка Android, когда представление видео создается за диалоговым окном, и когда диалоговое окно открывается, оно затемняет фоновые представления, включая видео.

«быстрое исправление», которое я применил,

WindowManager.LayoutParams a = dialog.getWindow().getAttributes();
a.dimAmount = 0;
dialog.getWindow().setAttributes(a);

они могут быть лучшим решением, например, передача контекста диалогового окна вместо использования одного и того же контекста для создания диалогового окна и просмотра видео (я проверю позже, если получу один раз)

person Jason Rogers    schedule 15.04.2011
comment
он удаляет все диалоговые окна, а не только видеопросмотр. - person Mahdi; 10.07.2015
comment
есть какое-нибудь решение для удаления только тусклых просмотров видео? - person Rosemary; 21.12.2018

В то время как предложенный пространственный специалист работает, единственная проблема заключается в том, что вы когда-нибудь захотите установить ZOrderOnTop в false после установки его в true. Кажется, когда-то установлен, это всегда верно.

Недавно я столкнулся с той же проблемой (просмотр видео в диалоговом окне), и способ, которым я ее исправил, неохотно, заключался в том, чтобы очистить FLAG_DIM_BEHIND, чтобы видео было «ярким». Я получил тусклый эффект, просто сделав свой диалог полноэкранным и установив для фона «тусклый цвет», если это имеет смысл.

Дополнительная информация: Что касается медиа-контроллера, я не смог найти способ вывести его наверх диалогового окна. В итоге я создал собственный макет элементов управления мультимедиа и поместил его поверх окна просмотра видео. В этом контексте это важно, так как вызов setZOrderOnTop не позволит вам поместить медиа-контроллер поверх представления видео.

Надеюсь, это имело смысл и помогло кому-то.

person s4ur0n    schedule 13.04.2013

Я попробовал это исправление и обнаружил, что оно работает.

Используйте следующий стиль в диалоговом окне для удаления затемненного поведения окна по умолчанию, поэтому VideoView / SurfaceView также не имеет затемненного поведения.

<item name="android:backgroundDimEnabled">false</item>

Затем в методе onViewCreated диалогового окна программно задайте фон для достижения эффекта Dim.

getDialog().getWindow().getDecorView().
            findViewById(android.R.id.content).
            setBackgroundResource(android.R.drawable.screen_background_dark_transparent);
person Sreegth    schedule 11.04.2018

еще одно простое решение - добавить это в свои стили, оно отключит тусклый фон.

<item name="android:backgroundDimEnabled">false</item>
person Shahzain ali    schedule 18.09.2017