Java 等待webview加载html,然后再截图

Java 等待webview加载html,然后再截图,java,android,webview,screenshot,Java,Android,Webview,Screenshot,我正在尝试在Android中拍摄一个网络视图的截图。然而,屏幕截图发射得太快,结果,我得到了一个空白的屏幕截图。我尝试实现一个webviewclient和onPageFinished,在拍摄之前监听webview的加载,但没有成功。在拍摄屏幕截图之前,如何确保视图已加载 public void onSaveClicked(View reLayout){ final WebView webview; setContentView(R.layout.webview); we

我正在尝试在Android中拍摄一个网络视图的截图。然而,屏幕截图发射得太快,结果,我得到了一个空白的屏幕截图。我尝试实现一个webviewclient和onPageFinished,在拍摄之前监听webview的加载,但没有成功。在拍摄屏幕截图之前,如何确保视图已加载

public void onSaveClicked(View reLayout){

    final WebView webview;
    setContentView(R.layout.webview);
    webview = (WebView) findViewById(R.id.webview);

    WriteJsJson();
    Activity context;

    context = _activity.get();
    Intent fire = new Intent(context, WebviewActivity.class);
    switch (_reportType) {
        case 1 :
            fire.putExtra("target", "daily"); // Parameter to tell the webview activity to open the right report.
        case 2 :
            fire.putExtra("target", "week");
        case 3 :
            fire.putExtra("target", "month");
    }
    startActivity(fire);

    webview.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            grabScreen(); //method for taking screenshot and storing it...
        }
    });

onPageFinished通知主机应用程序页面已完成加载。此方法仅对主框架调用。调用onPageFinished()时,渲染图片可能尚未更新。要获取新图片的通知,请使用onNewPicture(网络视图,图片)

示例代码

 mWebView.setPictureListener(new MyPictureListener());
//... and then later on....
class MyPictureListener implements PictureListener {

    @Override
    public void onNewPicture(WebView view, Picture arg1) {
      // put code here that needs to run when the page has finished loading and
      // a new "picture" is on the webview.      
    }    
} 

您可以添加setWebChromeClient以查看webview的过程

 webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, final int progress) {
            progressBar.setProgress(progress);
            if (progress == 100) {
                grabScreen();
            } 
        }
    });

看起来很有希望。但它说onNewPicture在以下方面不受欢迎: