Android使用WebView显示网页(图片缩放)

上周写了一篇关于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的宽度不会因为长代码太长导致体验不好。下一篇博文就解决这个问题。




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。