2014-09-29 70 views
2

我想在沒有UI交互的背景下在圖像中轉換HTML。我發現使用webview我們可以實現這一點。但Android已棄用webview.capturePicture();方法,並且我們還需要UI交互。如何在沒有UI交互的情況下將HTML轉換爲圖像?

+0

檢查了這一點http://stackoverflow.com/questions/20942623/which-can-replace-capturepicture-function – jmhostalet 2014-09-29 14:03:55

+0

嗨,我已經通過這個例子。但同樣這需要使用webview。和webview我們不能在後臺服務中執行操作。因爲我們不知道這項服務何時打電話。 – 2014-09-30 08:57:54

回答

0

首先在適當的佈局參數代碼實例化新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的寬度和高度不爲零;

相關問題