用于网络视图的Android屏幕截图API,包括同一Web视图的屏幕外部分



是否有任何API可用于截取包含完整WebView的WebView的屏幕截图(包括不属于当前视图的部分,但可以通过滚动WebView访问的部分(?

我发现在之前的问题中,本网站使用已弃用的方法,而这些方法无法正确呈现屏幕截图。

对于那些正在检查答案的人,从其他问题中我找到了答案。

     wvWb = (WebView) findViewById(R.id.wvMy);
    wvWb.getSettings().setJavaScriptEnabled(true);
    wvWb.loadUrl("http://www.entri.me");
    wvWb.setWebViewClient(new WebViewClient() {
     @Override
        public void onPageFinished(WebView view, String url) {
          String root = Environment.getExternalStorageDirectory().toString();
            File myDir = new File(root + "/11111");
            myDir.mkdirs();
            Random generator = new Random();
            int n = 10000;
            n = generator.nextInt(n);
            String fname = "Image-" + n + ".jpg";
            File file = new File(myDir, fname);
            wvWb.setDrawingCacheEnabled(true);
         wvWb.setDrawingCacheEnabled(false);
         wvWb.measure(android.view.View.MeasureSpec.makeMeasureSpec(
                    android.view.View.MeasureSpec.UNSPECIFIED, android.view.View.MeasureSpec.UNSPECIFIED),
                    android.view.View.MeasureSpec.makeMeasureSpec(0, android.view.View.MeasureSpec.UNSPECIFIED));
            wvWb.layout(0, 0, wvWb.getMeasuredWidth(),
                    wvWb.getMeasuredHeight());
            wvWb.setDrawingCacheEnabled(true);
            wvWb.buildDrawingCache();
            Bitmap bm = Bitmap.createBitmap(wvWb.getMeasuredWidth(),
                    wvWb.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
            Canvas bigcanvas = new Canvas(bm);
            Paint paint = new Paint();
            int iHeight = bm.getHeight();
            bigcanvas.drawBitmap(bm, 0, iHeight, paint);
            wvWb.draw(bigcanvas);

            if (bm != null) {
                try {
                    OutputStream fOut = null;
                    fOut = new FileOutputStream(file);
                    bm.compress(Bitmap.CompressFormat.PNG, 50, fOut);
                    fOut.flush();
                    fOut.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }
    });

最新更新