我有一个Ionic项目,我希望在其中显示视频,并在其上面显示cordova WebView
的内容。要在视频视图顶部显示透明WebView
,请在我使用的插件中使用:
webView.getView().setBackgroundColor(0x00000000);
((ViewGroup) webView.getView()).bringToFront();
VideoView
已初始化并添加到FrameLayout
中,如下所示:
FrameLayout containerView = (FrameLayout) cordova.getActivity().findViewById(1);
if (containerView == null) {
containerView = new FrameLayout(cordova.getActivity().getApplicationContext());
containerView.setId(1);
containerView.setBackgroundColor(Color.BLACK);
FrameLayout.LayoutParams containerLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
cordova.getActivity().addContentView(containerView, containerLayoutParams);
videoView = new VideoView(cordova.getActivity());
videoView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
containerView.addView(videoView);
MediaPlayer player = new MediaPlayer();
player.setOnPreparedListener(this);
player.setOnCompletionListener(this);
player.setOnErrorListener(this);
final SurfaceHolder holder = videoView.getHolder();
holder.setKeepScreenOn(true);
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
player.setDisplay(holder);
try {
player.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
player.release();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
});
}
我在Android 4.4.2上测试了它,效果很好。我已经在Android 5.1.1上对其进行了测试,并且在播放视频时WebView
不可见。但是,如果我使用Chrome检查它并将鼠标悬停在<body>
上(然后屏幕显示覆盖蓝色),则会显示html内容中的元素。此外,如果我触摸屏幕,则内容突然出现。因此,当与WebView
没有交互时,它似乎是一个渲染问题,但是一旦接到触摸或某种触发,它就会出现。
我也尝试过使用Crosswalk,它在4.2.2上仍能完美运行,但只适用于在5.1.1上启动应用程序,然后在第一次交互后它才能在触摸屏幕时起作用
我也在<preference name="BackgroundColor" value="0xff000000"/>
设置了config.xml
,但这并没有改变行为。
编辑1:
我在其中添加了一个带有透明文字的div,并在其上添加了一个简单的无限动画(只是将不透明度从.9
更改为1
),并且在{ {1}}现在播放时会出现在视频的顶部。它并不完美,因为WebView
内容有时会闪烁&#34;但它确实有效。虽然
答案 0 :(得分:-1)
用下面的代码替换。
webView.setBackgroundColor(Color.TRANSPARENT);
如果您想在视频视图的顶部添加webview, 使用应用程序内容布局并在其中添加webview,如下所示。
FramlayoutLayout layout = (FramlayoutLayout )cordova.getActivity() findViewById(android.R.id.content);
layout.addview(your webview)