从Android中的HTML生成位图

前端之家收集整理的这篇文章主要介绍了从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相关文章