从Canvas绘图时,不会反映Webview的程序化滚动

时间:2018-10-12 14:56:40

标签: android webview android-canvas

我正在使用draw方法从WebView提取帧并以编程方式滚动它。问题是,无论我的位图有多大,我都只能根据其原始尺寸从WebView获取输出。 getHeight()返回值1440,即使我将位图变大和/或滚动WebView,也只能从WebView中获得。 这是它的draw方法:

@Override
public void draw( Canvas canvas ) {
    int height = getHeight();
    bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    newCanvas = new Canvas(bitmap);
    super.draw(newCanvas);
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
    array.Buffer = stream.toByteArray();
    mPluginInterfaceBitmap.onFrameUpdate(array, width, height);
    stream.reset();
}

我正在像这样滚动Web视图:

mWebView.scrollBy(0,yScrollBy);

我知道它在滚动,因为我在随后的帧中检查:

mWebView.getScrollY()

我的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
<com.export.ian.webviewtest android:id="@+id/web_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

我也曾尝试增加Web视图的大小以使其与ContentHeight相匹配,但这是行不通的,而且我不确定无限滚动网站如何使用它。我希望能够以编程方式滚动Web视图并提取用户在网页中看到的内容的框架。

这是滚动一点后的样子(忽略图像的角度)enter image description here

1 个答案:

答案 0 :(得分:0)

最终找到了here的答案:

您必须先调用WebView.enableSlowWholeDocumentDraw(),然后再放大片段中的视图。