21

大家好,我在对话框视图中嵌入视频视图时遇到问题

一切正常,除了显示在对话框中的视频比显示在活动的其余部分中要暗得多

有任何想法吗 ?

这是一些代码

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();
                }
            });
4

5 回答 5

63

似乎它VideoView变暗了,因为它是在窗口后面创建的。Jason Rogers 解决方案有效,但意味着对话框后面的区域不会变暗。

我用了

mVideoView.setZOrderOnTop(true);

把它VideoView带到前面,这样它就不会变暗,但对话框后面的所有东西都会变暗。

于 2011-05-05T13:48:14.457 回答
18

我实际上找到了解决方案(或至少在我的情况下)

它似乎是android的一个错误,其中在对话框后面创建了视频视图,当对话框打开时,它会使包括视频在内的背景视图变暗

我应用的“快速修复”是

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

它们可能是一个更好的解决方案,例如传递对话框的上下文而不是使用相同的上下文来创建对话框和视频视图(如果有时间我会稍后检查)

于 2011-04-15T11:37:28.490 回答
2

虽然空间学家建议有效,但唯一的问题是,如果您想在将 ZOrderOnTop 设置为 true 后将其设置为 false。似乎一旦设置它总是正确的。

我最近遇到了同样的问题(对话框中的视频视图),我不情愿地修复它的方法是清除 FLAG_DIM_BEHIND 以便视频“明亮”。我通过让我的对话全屏并将背景设置为“暗淡的颜色”来获得暗淡的效果,如果这有任何意义的话。

更多信息:关于媒体控制器,我找不到任何将其置于对话框顶部的方法。我最终创建了一个自定义媒体控件布局并将其放在视频视图的顶部。在这种情况下很重要,因为调用 setZOrderOnTop 会阻止您将媒体控制器放在视频视图的顶部。

希望这是有道理的,可以帮助某人。

于 2013-04-13T00:15:14.617 回答
2

我尝试了此修复程序并发现它有效。

在对话框中使用以下样式来删除 Window 的默认暗淡行为,因此 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);
于 2018-04-11T14:44:53.010 回答
0

一个更简单的解决方案是将其添加到您的样式中,它将禁用暗背景。

<item name="android:backgroundDimEnabled">false</item>
于 2017-09-18T05:25:27.217 回答