Подтвердить что ты не робот

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 time to show it    
                    dialog.show();
                }
            });
4b9b3361

Ответ 1

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

кажется, что это ошибка от android, где Video View создается за диалогом, и когда открывается диалоговое окно, он уменьшает фоновые представления, включая видео

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

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

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

Ответ 2

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

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

mVideoView.setZOrderOnTop(true);

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

Ответ 3

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

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

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

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

Ответ 4

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

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