拦截Android WebView中的背景绘图渲染

问题描述 投票:1回答:1

我正试图实现一个WebView,在我的应用程序顶部显示一些额外的内容。只要Web应用程序没有一个坚实的背景色图像,它就能很好地工作。由于我无法控制这些扩展应用程序,有时会出现这种情况。

问题是--有什么方法可以 在Android WebView中截取背景图? 我的想法是,如果我可以钩入,我可以将一些矩形替换成透明的,这样我的应用程序就可以从下面显示。

android android-webview rendering
1个回答
0
投票

你可以尝试把WebView的背景做成透明的,这样可以使HTML的背景色无效。

webView.setBackgroundColor(Color.TRANSPARENT);
webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

确保在加载URL页面时调用它。

如果它没有覆盖你的自定义CSSHTML背景,那么你可以使用Webview的Javascript注入功能,当Webview被加载时,你可以操作它的属性,如删除一个特定ID的按钮,改变背景颜色等。

https:/mobikul.comandroid-inject-javascript-into-webview。

https:/medium.com@filipe.batistainject-javascript-into-webview-2b702a2a029f

https:/medium.comappunite-edu-collectionwebview-with-injected-js-script-13eb1e0257c9。

在评论框中回答你的疑问,由于评论的字符限制,无法回答。

1.1) 如果你不想完全删除背景-> 假设有任何HTML颜色的背景,例如#FF0000,你想让它变得有点透明,你可以获取这个颜色,增加这个颜色的透明度,例如(#ABFF0000),再把它设置为HTML背景。

1.2) 如果你在HTML中设置了一个图片作为背景,而你又不想把它完全删除,那么你就必须获取它的URL,下载它,对它进行处理,让它变得有点透明,然后再在Webview HTML中本地设置它作为背景,但这样做太占内存了,还有一个解决方案,我前面已经提到过,让整个Webview变得有点透明,但它会让每一个UI元素都变得透明,比如文字等。

2) 是的,这是这种方法的一个权衡,我们在Webview中操作已经加载的HTML页面,但考虑到现在大量的用户已经转移到强大的设备上,这不会影响受众。

© www.soinside.com 2019 - 2024. All rights reserved.