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