Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿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í:

  • Pre-estado pre-favorecido
  • AVD "usar host GPU" causar pantalla en negro cuando las aplicaciones de prueba
  • ¿Cómo conectar una aplicación de Android a una base de datos remota?
  • ¿Qué hacen exactamente setUseWideViewPort () y setLoadWithOverviewMode ()?
  • Cómo quitar un elemento seleccionado de ListView utilizando CursorAdapter
  • Cómo establecer una altura máxima con contenido de recapitulación en android?
  • 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?

  • Error de GCM - googleCloudMessaging.register
  • Obtén todos los mensajes de WhatsApp
  • ¿Cómo saber si un motor TTS específico está activado?
  • BroadcastReceiver no recibe la acción completa de descarga
  • Cómo cambiar el tamaño del marcador de imagen de ImageView con picasso
  • Cómo almacenar la base de datos sqlite directamente en sdcard
  • 2 Solutions collect form web for “¿Cómo puedo tomar una captura de pantalla de una vista web, capturar la página completa?”

    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.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.