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();
}
});
Ответы
Ответ 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>