1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android webView加载页面时显示出全部网页内容

android webView加载页面时显示出全部网页内容

时间:2021-11-09 07:24:52

相关推荐

android webView加载页面时显示出全部网页内容

//在加载页面时显示出整个网页内容

webView.getSettings().setUseWideViewPort(true);

webView.getSettings().setLoadWithOverviewMode(true);

//出现放大缩小的按钮功能

webView.getSettings().setBuiltInZoomControls(true);//

webView.getSettings().setSupportZoom(true);

//初始缩放比例

settings.setUseWideViewPort(true); // 是否支持任意比例缩放

wv_showHTML.setInitialScale(60);

主要是关于webview打开网页后的屏幕适应问题。

首先贴一段网上流传的代码:

//Supportdifferentscreens

4intscreenDensity=mMyActivity.getResources().getDisplayMetrics().densityDpi;

5switch(screenDensity){

6caseDisplayMetrics.DENSITY_LOW:

7mWebView.getSettings().setDefaultZoom(ZoomDensity.CLOSE);

8break;

9caseDisplayMetrics.DENSITY_MEDIUM:

10mWebView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM);

11break;

12caseDisplayMetrics.DENSITY_HIGH:

13mWebView.getSettings().setDefaultZoom(ZoomDensity.FAR);

14break;

15caseDisplayMetrics.DENSITY_XHIGH:

16mWebView.getSettings().setDefaultZoom(ZoomDensity.FAR);

17break;

18caseDisplayMetrics.DENSITY_TV:

19mWebView.getSettings().setDefaultZoom(ZoomDensity.FAR);

20break;

21}

这段代码的不靠谱之处在于:

1.明明case下有五种dpi,android库却只提供close,medium,far三个缩放因子(分别对应LOW,MEDIUM,HIGH,默认是MEDIUM),即便当dpi达到XHIGH(既320DPI)时,也只能设置far,显然是不正常的。

2.实际设备的实际dpi无法获取,因为无法得知设备的物理英寸,上面方法得到dpi值仅是个近似值。

如果单纯用上面的代码做屏幕缩放,对于一些机型肯定是不正常,并且无法估计长宽,比如一张1280宽的图片在实际dpi为X(X > 240 且 x < 320),分辨率为1280的设备上,有可能会被放大1.25倍,或是1.5倍。

如果想要得到正常的倍率,是需要配合网页端的。(这里仅讨论html5的场合,跨平台嘛)

个人认为,由网页方面写死一个宽,再提供一个js的缩放函数(包括图片,字体),根据不同设备的分辨率来调用,是比较理想的。(当然,也可以用穷举法,一个分辨率进一个网页,用不同css和不同大小资源 =_=!)

假设宽定位1280,则html5方面必须有:

1<metaname="viewport"content="width=1280,initial-scale=1.0,maximum-scale=2.0,minimum-scale=0.5,user-scalable=no,target-densitydpi=device-dpi"/>

其中,target-densitydpi是最重要的,它将配合android端的以下代码使用。

1//usehtml5viewportattribute

2settings.setLoadWithOverviewMode(true);

3settings.setUseWideViewPort(true);

表示我们的代码支持html5网页自适应。所谓杀什么畜生用什么刀,网页的事情,dpi适应什么的,就交给html5去做好了 = =,不用我们在更外面一层蛋疼。

这样做之后,1280宽的图片无论在什么设备的分辨率都是正常的尺寸,不会被做倍数不明的拉伸,方便我们控制。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。