您如何从
Android中的HTML生成位图?
WebView可以用于这个还是有更好的方法(例如直接使用WebView渲染引擎)?怎么样?
我想实现以下方法…
public Bitmap toBitmap(Context context,String html,Rect rect);
…其中html是要渲染的html,rect是所需位图的框架.
解决方法
一种使用WebView从HTML字符串生成位图并可在AsyncTask中使用的同步方法:
public Bitmap getBitmap(final WebView w,int containerWidth,int containerHeight,final String baseURL,final String content) { final CountDownLatch signal = new CountDownLatch(1); final Bitmap b = Bitmap.createBitmap(containerWidth,containerHeight,Bitmap.Config.ARGB_8888); final AtomicBoolean ready = new AtomicBoolean(false); w.post(new Runnable() { @Override public void run() { w.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view,String url) { ready.set(true); } }); w.setPictureListener(new PictureListener() { @Override public void onNewPicture(WebView view,Picture picture) { if (ready.get()) { final Canvas c = new Canvas(b); view.draw(c); w.setPictureListener(null); signal.countDown(); } } }); w.layout(0,rect.width(),rect.height()); w.loadDataWithBaseURL(baseURL,content,"text/html","UTF-8",null); }}); try { signal.await(); } catch (InterruptedException e) { e.printStackTrace(); } return b; }
它有一些限制,但这是一个开始.