从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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...