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

空間主義者が提案したものは機能しますが、唯一の問題は、trueに設定した後にZOrderOnTopをfalseに設定したい場合です。一度設定すると、それは常に真実のようです。

私は最近同じ問題(ダイアログのビデオビュー)に遭遇しました、そして私がそれを修正した方法は、しぶしぶ、ビデオが「明るい」ようにFLAG_DIM_BEHINDをクリアすることでした。ダイアログを全画面表示にし、意味がある場合は背景を「薄暗い色」に設定するだけで、薄暗い効果が得られました。

詳細:メディアコントローラーに関して、ダイアログの一番上に表示する方法が見つかりませんでした。最終的にカスタムメディアコントロールレイアウトを作成し、それをビデオビューの上に配置しました。setZOrderOnTopを呼び出すと、メディアコントローラーをビデオビューの上に配置できなくなるため、このコンテキストでは重要です。

これが理にかなっていて、誰かを助けることを願っています。

于 2013-04-13T00:15:14.617 に答える
2

この修正を試してみたところ、機能していることがわかりました。

ウィンドウのデフォルトの薄暗い動作を削除するには、ダイアログで次のスタイルを使用します。これにより、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

もう1つの簡単な解決策は、これをスタイルに追加することです。これにより、薄暗い背景が無効になります。

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