【问题标题】:How to use onDraw(Canvas) to obtain a bitmap snapshot of the WebView(Android)如何使用onDraw(Canvas)获取WebView(Android)的位图快照
【发布时间】:2013-11-20 07:57:31
【问题描述】:

我曾经使用 capturePicture() 方法来制作我的 WebView 的快照。 此方法在 API 级别 19 中已弃用。

文档说“使用 onDraw(Canvas) 获取 WebView 的位图快照”,但我真的不知道这是什么意思。

你能教我怎么解决这个问题吗?

【问题讨论】:

  • 只需调用 webView.onDraw(canvas)
  • 谢谢!但是 onDraw(canvas) 是受保护的。我不能随便叫它。它什么也不返回。
  • 扩展 WebView 并从那里调用它,使用由 new Canvas(Bitmap) 创建的 Canvas
  • 喜欢这个?位图位图 = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_4444); this.draw(new Canvas(bitmap));
  • 我只拍了一张空白图片...

标签: android webview bitmap android-canvas snapshot


【解决方案1】:

以下应该有效:

float scale = webView.getScale();
int webViewHeight = (int)(webView.getContentHeight() * scale);
Bitmap image = Bitmap.createBitmap(webView.getWidth(), webViewHeight, Config.ARGB_8888);
Canvas canvas = new Canvas(image);
webView.draw(canvas);

【讨论】:

  • 您是捕获整个网络视图还是仅捕获可见的内容?我的意思是如果网页内容很长,你的方法可以全部捕获吗?
  • @lolyoshi WebView.draw() 确实会捕获所有内容,但我不确定WebView.getWidth() 是否会为内容返回正确的宽度,我仍然需要检查我的应用程序我正在努力。
  • 是的!使用 getContentHeight() * getScale() 确实捕获了整个页面,而不仅仅是可见的内容。
  • 在 Android 6.0 上,它不会捕获整个视图,只捕获可见部分。
  • getScale() 已弃用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
相关资源
最近更新 更多