从webview捕获的图像未在android中完全加载
我有一个从webview捕获的图像未在android中完全加载,android,webview,bitmap,Android,Webview,Bitmap,我有一个WebView,里面有一堆带有标题和日期的图片 但是,捕获webview后,结果图像未完全加载 我的代码在4.3中工作,但在4.4及以上版本中不工作 我怎样才能解决这个问题 要生成位图并保存到SD卡,请执行以下操作: myWebView.getHeight(); Picture p = myWebView.capturePicture(); myWebView.setDrawingCacheEnabled(true); new bitmap(p).execute(); 异步类: cl
WebView
,里面有一堆带有标题和日期的图片
但是,捕获webview后,结果图像未完全加载
我的代码在4.3中工作,但在4.4及以上版本中不工作
我怎样才能解决这个问题
要生成位图并保存到SD卡,请执行以下操作:
myWebView.getHeight();
Picture p = myWebView.capturePicture();
myWebView.setDrawingCacheEnabled(true);
new bitmap(p).execute();
异步类:
class bitmap extends AsyncTask<URL, Void, Bitmap> {
Picture pict;
ProgressDialog progressDialog = null;
public bitmap(Picture pict){
this.pict=pict;
}
protected void onPreExecute() {
}
@Override
protected Bitmap doInBackground(URL... arg0) {
PictureDrawable pictureDrawable = new PictureDrawable(pict);
Bitmap bitmap = null;
bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888);
myWebView.buildDrawingCache();
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
int iHeight = bitmap.getHeight();
canvas.drawBitmap(bitmap, 0, iHeight, paint);
myWebView.draw(canvas);
return bitmap;
}
@SuppressLint("NewApi")
protected void onPostExecute(Bitmap result) {
myWebView.setDrawingCacheEnabled(false);
if (result == null) {
Toast.makeText(MainActivity.this,"Bitmap Null", Toast.LENGTH_LONG).show();
}
else {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/Sample");
myDir.mkdirs();
String fname = "sampleimage"+".jpg";
File file = new File(myDir, fname);
if (file.exists())
file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
result.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
类位图扩展异步任务{
图片图片;
ProgressDialog=null;
公共位图(图片pict){
this.pict=pict;
}
受保护的void onPreExecute(){
}
@凌驾
受保护位图doInBackground(URL…arg0){
Picturedravable Picturedravable=新的Picturedravable(pict);
位图=空;
bitmap=bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),pictureDrawable.getIntrinsicHeight(),Config.ARGB_8888);
myWebView.buildDrawingCache();
画布=新画布(位图);
油漆=新油漆();
int iHeight=bitmap.getHeight();
drawBitmap(位图,0,iHeight,paint);
myWebView.draw(画布);
返回位图;
}
@SuppressLint(“新API”)
受保护的void onPostExecute(位图结果){
myWebView.setDrawingCacheEnabled(false);
如果(结果==null){
Toast.makeText(MainActivity.this,“位图空”,Toast.LENGTH_LONG.show();
}
否则{
String root=Environment.getExternalStorageDirectory().toString();
File myDir=新文件(root+“/Sample”);
myDir.mkdirs();
字符串fname=“sampleimage”+“.jpg”;
File File=新文件(myDir,fname);
if(file.exists())
delete();
试一试{
FileOutputStream out=新的FileOutputStream(文件);
结果.压缩(Bitmap.CompressFormat.JPEG,90,out);
out.flush();
out.close();
}捕获(例外e){
e、 printStackTrace();
}
}
}
}
以及webview数据的代码:
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
String samplehtml="<html><head><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes' /><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> </head> <body ><img alt='Embedded Image' style='min-height:30%;width:100%;height:23%;border-radius: 0px;margin-bottom:5%;' src='file:///android_asset/images.jpg'/></div></div><br><br><br><br>";
for(int i=0;i<55;i++) {
samplehtml+="<img alt='Embedded Image' style='min-height:30%;width:100%;height:23%;border-radius: 0px;margin-bottom:5%;' src='file:///android_asset/images.jpg'/><p style='color:black;width:100%;float:right;'>Sample text</p><br><br></div><p id='dateleft' style='margin-top:3%;'>sample date</p></div><br><br><br><br></body></html>";
}
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
myWebView.getHeight();
Picture p = myWebView.capturePicture();
myWebView.setDrawingCacheEnabled(true);
new bitmap(p).execute();
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(MainActivity.this, description, Toast.LENGTH_SHORT).show();
}
});
myWebView.loadDataWithBaseURL(null, samplehtml, null, "utf-8",null);
WebSettings-WebSettings=myWebView.getSettings();
setJavaScriptEnabled(true);
字符串samplehtml=“
”;
对于(int i=0;i