2017-06-15 69 views
2

我想要在Android中的Web视图截图。然而,屏幕截图太快,因此我得到一个空白的截图。我尝试实施一个webviewclient和onPageFinished在拍摄之前听取webview加载,但它没有奏效。在拍摄截图之前,如何确保视图已加载?等待webview加载HTML之前采取屏幕截图

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... 
     } 
    }); 

回答

2

您可以添加setWebChromeClient看到网页视图的过程。

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

这段代码工作完美吗? –

2

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

示例代码

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.  
    }  
} 
+0

看起来很有希望。但它说onNewPicture已被弃用:https://developer.android.com/reference/android/webkit/WebView.PictureListener.html#onNewPicture – cashmoneyscience

相关问题