การวาด WebView นอกหน้าจอเป็นบิตแมป

ฉันกำลังพยายามจับภาพ Webview ที่ดึงออกจากหน้าจอไปยังผู้ใช้ใน Android และฉันก็มักจะจบลงด้วยภาพสีดำ มันเป็นขนาดที่ถูกต้องและทุกอย่างก็ไม่ใช่

นี่คือรหัสที่ฉันใช้:

String theURL = "file:///android_asset/www/pages/page2.html";
        WebView webview = new WebView(ctx);
        webview.loadUrl(theURL);
        Bitmap bm = Bitmap.createBitmap(1000, 1000, Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(bm);
        webview.draw(c);
        OutputStream stream = null;
        try {
            stream = new FileOutputStream(Environment.getExternalStorageDirectory() +"/page.jpg");
            bm.compress(CompressFormat.JPEG, 80, stream);
            if (stream != null) stream.close();              
            return new PluginResult(PluginResult.Status.OK); 
        } catch (IOException e) {
            return new PluginResult(PluginResult.Status.ERROR, e.toString());
        } finally {
            bm.recycle();
        }       

ขอบคุณถ้าใครสามารถช่วยได้


person Rich    schedule 24.06.2011    source แหล่งที่มา


คำตอบ (1)


webview.loadUrl(theURL); เริ่มการโหลดหน้าเว็บ ซึ่งอาจใช้เวลาสักครู่ รอก่อนที่จะวาด webview ของคุณจนกว่าหน้าจะโหลดแล้ว คุณสามารถใช้ setWebViewClient(WebViewClient client) เพื่อตั้งค่าออบเจ็กต์ให้รับการแจ้งเตือนเมื่อโหลดเพจเสร็จแล้ว

person Rene    schedule 24.06.2011