2016-07-20 18 views
2

Ich versuche, einen Screenshot eines WebView mit seinen unsichtbaren Teilen zu machen. Wenn die Höhe des WebView zu lang ist (z. B. 20000 px), stehe ich vor einem Problem, dass der untere Teil des Screenshots (z. B. 7000 px) eine einfarbige Farbe hat.Vollständige Seite WebView Screenshot funktioniert nicht richtig

Dies ist mein Code:

Picture picture = webWiew.capturePicture(); 

Bitmap b = null; 

try { 
    b = Bitmap.createBitmap(picture.getWidth(), 
    picture.getHeight(), Bitmap.Config.RGB_565); 

    Canvas c = new Canvas(b); 
    picture.draw(c); 

catch (OutOfMemoryError outOfMemoryError) { 

    } 

und dies ist der Screenshot:

enter image description here

+0

Wie rufen Sie oben Code in welcher Methode? –

Antwort

1

Sie sollten Überschreibung picture.draw() -Methode

0

Inflating Inhalt in einen WebView nimmt Speicher. Abhängig von der Implementierung werden unterschiedliche Datenmengen außerhalb des Bildschirms aufgebläht, damit sich der Bildlauf für den Benutzer reibungslos anfühlt.

Also, Ihr Problem ist, dass die Daten für den letzten (Volltonfarbe) Teil ist einfach nicht da :-)

Sie können die Dokumentation prüfen WebView, um zu sehen, ob es möglich ist, um die Vorspannung zu machen Offset unbegrenzt, aber ich bezweifle es, da es zu vielen OutOfMemoryErrors führen würde.


EDIT:

Auch scheint .capturePicture() ist veraltet zu werden. Bitte versuchen Sie den folgenden Code-Schnipsel:

Picture picture = webWiew.capturePicture(); //Just to get real content dimensions, you can later look for another source of them 

Bitmap b = null; 

try { 
    b = Bitmap.createBitmap(picture.getWidth(), 
    picture.getHeight(), Bitmap.Config.RGB_565); 

    Canvas c = new Canvas(b); 
    webView.onDraw(c); //This changed 

catch (OutOfMemoryError outOfMemoryError) {} 
+0

Vielen Dank für Ihre Antwort. Das ist eine gute Perspektive, aber mein Problem ist nicht. Wenn ich bis zum Ende des WebView blättern und zu diesem Zeitpunkt einen Screenshot mache, passiert genau das gleiche Szenario. –

+0

Mit genau dem gleichen Ausgang? Oder dieses Mal ist die einfarbige Farbe oben? – Kelevandos

+0

Mit genau dem gleichen Ausgang. Einfarbig ist wieder unten. –

1

Sie Bild Teil für Teil aufteilen können.

Verwandte Themen