Android, показващ фонов WebView като растерно изображение

Бих искал да заредя уеб изглед във фонов режим и да покажа само растерно изображение на страницата, която зарежда. Имам уеб изглед в моята йерархия на изгледи, който има видимост, зададена на „невидим“, и изглед на изображение, който искам да показва растерно изображение на уеб изгледа.

imageView = (ImageView)findViewById(R.id.imageview);
webView = (WebView)findViewById(R.id.webview);
webView.setBackgroundColor(Color.parseColor("#006330"));

webView.setDrawingCacheEnabled(true);
webView.loadDataWithBaseURL(SiteAPI.URL, html, "text/html", "iso-8859-1", null);

webView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
webView.layout(0, 0, webView.getMeasuredWidth(), webView.getMeasuredHeight());

Bitmap b = webView.getDrawingCache(); 
webView.setDrawingCacheEnabled(false);          

if(b != null) {
     Toast.makeText(getBaseContext(), "Not null", Toast.LENGTH_LONG).show();
     imageView.setImageBitmap(Bitmap.createBitmap(b));
}
else {
     Toast.makeText(getBaseContext(), "Null.", Toast.LENGTH_LONG).show();
}

Извикването на getDrawingCache() връща нула всеки път. Опитах setContentView(webView) и страницата се показва добре. Уверих се, че isDrawingCacheEnabled() връща true, но растерното изображение все още е нула. Къде греша?


person Chris Allen    schedule 14.02.2011    source източник


Отговори (1)


Имате две възможности:

  1. Използвайте метода webView.capturePicture(), но имайте предвид, че това ще върне картина на цялата уеб страница, така че трябва да я изрежете, за да се покаже само частта, която искате.

  2. Начертайте ръчно вашия webView в обекта Canvas, който искате, като използвате webView.draw(Canvas).

person Lucas S.    schedule 14.02.2011