我使用WebView将HTML转换为图像。 HTML固定为600px(使用CSS定义)。
WebView布局是:
<WebView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none"/>
在加载html文档时,我通过执行以下操作获取webview大小:
int width = webView.getMeasuredWidth();
int height = webView.getMeasuredHeight();
我注意到的第一个奇怪的事情是宽度是650.文档显示,我需要水平滚动才能查看它(lo-res设备)。
下一步是将webview转换为图像:
bitmap = Bitmap.createBitmap(600, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bitmap);
webView.draw(c);
但是,将webview转换为位图裁剪右侧部分(webview中不可见的区域)。
为什么在我的HTML文档中定义600时webview宽度为650?为什么图像裁剪?
答案 0 :(得分:0)
首先,请注意HTML(CSS)像素与屏幕像素不同。这是因为您可以缩放您正在查看的页面 - 这不会影响其CSS维度(简单地说,HTML布局不会&#34;注意&#34;缩放),而是会改变多少个屏幕您在CSS像素中拥有的像素。
当您为屏幕上的WebView调用WebView.draw()
时,它会根据WebView的当前大小绘制到画布上 - 基本上,您在屏幕上看到的是您将在位图中获得的内容。
因此,有两种方法可以做你想做的事:
使WebView宽度足够大以容纳您的页面。为此,您需要将WebView放在ScrollView
内,并相应地设置WebView的宽度。
调整显示内容的大小,使其适合屏幕。为此,您可以使用两个WebView设置:setUseWideViewport(true)
和setLoadWithOverviewMode(true)
以及initial-scale
HTML标记中的<meta name="viewport">
值。