首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从WebView抓取图片

从WebView抓取图片
EN

Stack Overflow用户
提问于 2010-12-27 11:45:30
回答 1查看 5.8K关注 0票数 5

是否可以侦听WebView页面加载已完成,然后捕获已加载页面的屏幕截图?

我试过两种方法,但都没用:

  • 使用WebViewClientonPageFinished(WebView view, String url)

它不起作用(在文档中也有描述),因为图片现在可能还没有准备好--

  • 使用WebView.PictureListeneronNewPicture(WebView view, Picture picture)

它也不能解决问题,因为这个方法会调用未确定的时间。第一次,图片通常只包含部分页面内容。我不知道如何确定当前调用是否是页面的最后一个调用。

我想要注意的是,问题是要找到合适的时机来制作截图,而不是如何去做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-30 23:23:07

[请注意,自从我回答了这个问题后,onNewPicture就被否决了(参见http://developer.android.com/reference/android/webkit/WebView.PictureListener.htmlWhat does "This method is deprecated" mean for application developers)。不幸的是,没有关于什么取代它,或者支持什么API级别的信息。我想这意味着你要冒着自己的风险使用它。]

我认为您是正确的,onNewPicture是捕获已加载WeView页面的截图的正确位置,但也正确的是,很难知道何时实际进行捕获。

看来,只要有任何绘图,WebView就会调用onNewPicture。例如,当搜索栏处于键盘进入模式且光标正在闪烁时,它会反复调用onNewPicture。类似地,对于一些网页(如www.yelp.com/nyc),它会反复调用onNewPicture,甚至在页面完成绘图之后也是如此,这可能是因为搜索框中闪烁的光标。但在另一个极端,它只会调用onNewPicture一次(例如,如果用户放下一个iGoogle项目)。

所以没有简单的规则吗?我们采取的方法是

onNewPicture

  • run

  • 监视涉及/影响页面加载的一系列事件--例如shouldOverrideUrl、onPageFinished、焦点更改、滚动开始/结束,以及onNewPicture上的计时器(2秒工作良好),由新onNewPicture

  • implement重置页面加载FSM (使用事件和计时器过期作为输入),并经过一系列状态/动作转换,直到决定真正拥有新图片的时候。

不是很漂亮,但效果很好,只有极少数情况下,它捕捉到了同一张照片两次--而且没有一种情况下,它不能捕捉到它应该捕捉到的图片。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4538429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档