Я пытаюсь сделать скриншот содержимого моего WebView. Я создаю растровое изображение, а затем создаю холст из этого растрового изображения, затем я вызываю метод drawPage(canvas) внутри onPageFinished() (это обратный вызов из WebChromeClient), но внутри onPageFinished() webView все еще не загрузил содержимое, поэтому я вижу только сначала черная страница, а затем я вижу предыдущие страницы (потому что, когда я вызываю ее во второй раз, предыдущие страницы загружаются в webView). Как я мог справиться с этой проблемой? Я могу решить это с помощью хадлеров с некоторой задержкой, но я думаю, что должен быть лучший способ сделать это. Спасибо за помощь.
скриншот из веб-просмотра
Ответы (1)
Я не думаю, что понимаю проблему, но вы спрашиваете, как вызвать событие в WebView, загружающем страницу? Не могли бы вы создать клиент WebView и переопределить onPageCompleted()?
private WebViewClient viewClient {
@Override
public boolean onPageFinished(WebView view, String url) {
//here you can run your Bitmap creating code
return true;
}
}
YourWebView.setWebViewClient(viewClient);
Это то, что вы ищете?
person
Woody
schedule
14.08.2011
Если я делаю снимок экрана внутри метода onPageFinished(), я сначала получаю пустую страницу, когда я загружаю другую страницу в тот же веб-просмотр и делаю снимок экрана, я получаю экран предыдущей страницы (потому что в веб-просмотре все еще есть предыдущая страница внутри). Я ищу момент, когда страница, которую я загрузил, наконец отобразилась в веб-представлении.
- person Ving; 15.08.2011
Я знаю, вы упомянули, что пытаетесь сделать это с задержкой, но вы правы, это кажется неправильным. Могу я спросить, почему вы пытаетесь сделать скриншот? Возможно, это не лучший способ добиться того, что вы пытаетесь сделать. Установка для Loaded Boolean значения true в
onPageFinished()
, а затем проверка того, является ли Loaded истинным в методе onDraw()
WebView, может что-то сделать, но это просто идея.
- person Woody; 15.08.2011