¿Cómo puedo tomar una captura de pantalla de una vista web, capturar la página completa?

Creo que el título lo cubre bastante, pero tengo una webview en mi actividad. He cargado una url en la webview y me gustaría tomar una captura de pantalla de la página completa (lo que está en la ventana de visualización y las cosas "debajo del doblez" también).

Tengo código que funciona para instantáneas de la ventana gráfica, y sé que esto se puede hacer en iOS mediante la ampliación de la webview antes de instantáneas. He intentado usar la misma técnica aquí:

WebView browserView = (WebView) findViewById(R.id.browserView); //Resize the webview to the height of the webpage int pageHeight = browserView.getContentHeight(); LayoutParams browserParams = browserView.getLayoutParams(); browserView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, pageHeight)); //Capture the webview as a bitmap browserView.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(browserView.getDrawingCache()); browserView.setDrawingCacheEnabled(false); //Create the filename to use String randomFilenamepart = String.valueOf(new SecureRandom().nextInt(1000000)); String filename = Environment.getExternalStorageDirectory().toString() + "/Screenshot_" + randomFilenamepart + ".jpg"; File imageFile = new File(filename); //Stream the file out to external storage as a JPEG OutputStream fout = null; try { fout = new FileOutputStream(imageFile); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fout); fout.flush(); fout.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { browserView.setLayoutParams(browserParams); } 

Pero todavía estoy captando sólo el visor. Haciendo caso omiso de cosas como quedarse sin memoria porque la página es demasiado grande, ¿alguien sabe lo que estoy haciendo mal o cómo puedo incluir la porción fuera de la ventana gráfica?

Prueba éste

  import java.io.FileOutputStream; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Picture; import android.os.Bundle; import android.view.Menu; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { WebView w ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); w = new WebView(this); w.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { Picture picture = view.capturePicture(); Bitmap b = Bitmap.createBitmap( picture.getWidth(), picture.getHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas( b ); picture.draw( c ); FileOutputStream fos = null; try { fos = new FileOutputStream( "mnt/sdcard/yahoo.jpg" ); if ( fos != null ) { b.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.close(); } } catch( Exception e ) { } } }); setContentView(w); w.loadUrl("http://search.yahoo.com/search?p=android"); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } 

}

Agregue el permiso de INTERNET en el archivo AndroidManifest.xml.

@avinash thakur códigos realmente funciona, que acaba de olvidar mencionar a añadir <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> en el archivo de manifiesto de Android, de lo contrario, Android no permitirá que su flujo para escribir datos / archivo en el dispositivo .

aclamaciones.

  • WebView con vídeo incorporado reproduce en segundo plano
  • Colocación de contenido HTML en dos columnas dentro de WebView
  • WebView de Android cargando en blanco al ver listas anidadas html
  • Enlace de evento de toque de Android WebView
  • cómo leer el archivo .webarchive en android
  • Cómo habilitar WebKitDeveloperExtras en WebView de Android
  • ¿La aplicación se bloquea al reproducir video de tubo en la vista web?
  • WebView - no puede descargar el archivo sin solicitarlo dos veces?
  • Cómo reducir el tamaño de WebView dinámicamente de acuerdo a su contenido?
  • FlipAnimation causando problemas en 4.4.3
  • Android WebView PictureListener Deprecated - ¿Todavía no hay alternativa?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.