是否可以监听WebView页面加载完成,然后捕获已加载页面的屏幕截图?
我尝试了两种方法,但两种方法均无效:
使用WebViewClient
和onPageFinished(WebView view, String url)
的
它不起作用(并且在文档中进行了描述),因为Picture此时可能尚未准备好
WebView.PictureListener
和onNewPicture(WebView view, Picture picture)
的它也不能解决问题,因为此方法调用的时间不确定。第一次,图片通常只包含页面内容的一部分。而且我不知道如何确定当前调用在该页面上是最后一次。
我想注意到,问题在于找到合适的时机来制作屏幕截图,而不是如何完成。
最佳答案
[请注意,自从我回答这个问题以来,不推荐使用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项目)。
因此,没有简单的规则吗?我们采取的方法是
不是很漂亮,但是它可以工作,在极少数情况下它两次捕获同一张图片-并且在任何情况下都无法在应有的位置捕获图片。
关于android - 从WebView捕获图片,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4538429/