是否可以侦听WebView页面加载已完成,然后捕获已加载页面的屏幕截图?
我试过两种方法,但都没用:
WebViewClient和onPageFinished(WebView view, String url)。它不起作用(在文档中也有描述),因为图片现在可能还没有准备好--
WebView.PictureListener和onNewPicture(WebView view, Picture picture)它也不能解决问题,因为这个方法会调用未确定的时间。第一次,图片通常只包含部分页面内容。我不知道如何确定当前调用是否是页面的最后一个调用。
我想要注意的是,问题是要找到合适的时机来制作截图,而不是如何去做。
发布于 2011-03-30 23:23:07
[请注意,自从我回答了这个问题后,onNewPicture就被否决了(参见http://developer.android.com/reference/android/webkit/WebView.PictureListener.html和What does "This method is deprecated" mean for application developers)。不幸的是,没有关于什么取代它,或者支持什么API级别的信息。我想这意味着你要冒着自己的风险使用它。]
我认为您是正确的,onNewPicture是捕获已加载WeView页面的截图的正确位置,但也正确的是,很难知道何时实际进行捕获。
看来,只要有任何绘图,WebView就会调用onNewPicture。例如,当搜索栏处于键盘进入模式且光标正在闪烁时,它会反复调用onNewPicture。类似地,对于一些网页(如www.yelp.com/nyc),它会反复调用onNewPicture,甚至在页面完成绘图之后也是如此,这可能是因为搜索框中闪烁的光标。但在另一个极端,它只会调用onNewPicture一次(例如,如果用户放下一个iGoogle项目)。
所以没有简单的规则吗?我们采取的方法是
onNewPicture
不是很漂亮,但效果很好,只有极少数情况下,它捕捉到了同一张照片两次--而且没有一种情况下,它不能捕捉到它应该捕捉到的图片。
https://stackoverflow.com/questions/4538429
复制相似问题