在webview中要对图片进行自适应就需要对图片在网页中的css样式进行调整。一种方法是在加载完网页后在onPageFinish中用js调用对图片样式进行调整,这种方法是在网页加载完再调整图片样式进行二次渲染,所以会有一个短暂延时,可以看到明显的页面闪烁变化。另外一种方法是在加载网页前对网页图片样式进行修改调整,然后再用loadDataWithBaseURL加载网页,这种方法不会有二次渲染而导致的页面闪烁。
下面是用第二种方法对图片处理的一种方案。调整图片的思路是如果图片大小超过了屏幕大小就按屏幕宽度来适配,如果未超过则按原图显示。修改图片样式需要用jsoup获取图片元素信息并做修改。
处理方法如下:
//获取图片大小
public BitmapFactory.Options getImageInfo(String imgPath) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeFile(imgPath, options);
return options;
}
//调整网页中图片的样式
public String resetImageSize(String htmlContent, Context context) {
Document doc = Jsoup.parse(htmlContent);
Elements imgs = doc.getElementsByTag("img");
if (imgs.size() != 0) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
float density = context.getApplicationContext().getResources().getDisplayMetrics().density;
String ba