上周写了一篇关于webview的博文:Android使用WebView显示网页(图片大小的处理及内容的自适应)
后来通过自己想的第三种办法实现了图片的适配,方法是设置html的img标签属性,把图片的宽度设置为设备屏幕的宽度,涉及的知识点就是,获取设备宽度值、java代码 添加/修改 html标签属性。
1. 获取设备屏幕信息:
/** * 获取设备的屏幕信息 * @param activity * @return */ public static DeviceInfo getDevicesPix(Activity activity) { DisplayMetrics metric = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(metric); DeviceInfo deviceInfo = new DeviceInfo(); deviceInfo.width = metric.widthPixels; // 屏幕宽度(像素) deviceInfo.height = metric.heightPixels; // 屏幕高度(像素) deviceInfo.density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5) deviceInfo.densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240) Log.i(TAG, "deviceInfo.width" + deviceInfo.width); Log.i(TAG, "deviceInfo.height" + deviceInfo.height); Log.i(TAG, "deviceInfo.density" + deviceInfo.density); Log.i(TAG, "deviceInfo.densityDpi" + deviceInfo.densityDpi); return deviceInfo; }
html标签中设置图片宽度值的单位是像素pix,所以这里没有转换。
2. jsoup设置html标签属性:
Elements elementImgs = detail.getElementsByTag("img");//获取所有img标签 DeviceInfo deviceInfo = DeviceUtil.getDevicesPix(BlogContentActivity.this); for (Element img : elementImgs) { img.attr("width", (int)(deviceInfo.width/deviceInfo.density) + "px");//设置width属性 }
将经过处理的html加载到webview,就可以看到图片是与屏幕同宽,当然如果图片本来的大小小于屏幕宽度,就没必要进行放大了,可以在修改width属性前,先判断一下。
通过webview显示CSDN博文,就剩下一个问题:如何高亮显示代码,且webview的宽度不会因为长代码太长导致体验不好。下一篇博文就解决这个问题。
时间: 2024-10-14 01:42:32