从Android中的HTML生成位图

您如何从 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;
}

它有一些限制,但这是一个开始.

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...