2
我想在没有UI交互的背景下在图像中转换HTML。我发现使用webview我们可以实现这一点。但Android已弃用webview.capturePicture();方法,并且我们还需要UI交互。如何在没有UI交互的情况下将HTML转换为图像?
我想在没有UI交互的背景下在图像中转换HTML。我发现使用webview我们可以实现这一点。但Android已弃用webview.capturePicture();方法,并且我们还需要UI交互。如何在没有UI交互的情况下将HTML转换为图像?
首先在适当的布局参数代码实例化新WebView
:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
WebView.enableSlowWholeDocumentDraw();
}
WebView webView = new WebView(context);
FrameLayout frameLayout = new FrameLayout(context);
frameLayout.setLayoutParams(new FrameLayout.LayoutParams(512, 100));
webView.setLayoutParams(new FrameLayout.LayoutParams(512, FrameLayout.LayoutParams.WRAP_CONTENT));
frameLayout.addView(webView);
webView.setDrawingCacheEnabled(true);
然后设置一个WebViewClient
听时的WebView加载完成:
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(final WebView view, String url) {
return false;
}
@Override
public void onPageFinished(final WebView view, String url) {
Log.i("HTML", "page finished loading " + url);
view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(view.getDrawingCache());
// bitmap is ready
}) ;
那么你的HTML载入WebView
:
webView.loadDataWithBaseURL(null, YOUR_HTML_STRING, "text/html", "UTF-8", null);
重要提示:在所有步骤中确保webview的宽度和高度不为零;
检查了这一点http://stackoverflow.com/questions/20942623/which-can-replace-capturepicture-function – jmhostalet 2014-09-29 14:03:55
嗨,我已经通过这个例子。但同样这需要使用webview。和webview我们不能在后台服务中执行操作。因为我们不知道这项服务何时打电话。 – 2014-09-30 08:57:54