Android开发-WebView(三)-WebSettings

617 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

前面已经介绍了webview使用过程中需要注意的2个内置的方法以及他们的作用,业务处理的需求场景,当然如果知识简单的加载一个html的网页可以完全不设置这2个方法的实现,接下来介绍下webview的一些基础设置,以及这些设置的作用,适用范围,系统兼容等等。

WebSettings的定义及使用

WebSettings:通俗易懂的单词,webview的设置属性,它的作用主要是配置和管理webview的状态,简单的说明就是它是配置webview的一些属性功能。

WebSettings的使用

WebSettings是通过webview的getSettings方法获取的,它有哪些可配置的属性呢?

1、setSupportZoom(boolean support)

2、setMediaPlaybackRequiresUserGesture(boolean require)

3、setBuiltInZoomControls(boolean enabled)

4、setDisplayZoomControls(boolean enabled)

5、setAllowFileAccess(boolean allow)

6、setAllowContentAccess(boolean allow)

7、setLoadWithOverviewMode(boolean overview)

8、setSaveFormData(boolean save)

9、setTextZoom(int textZoom)

10、setAcceptThirdPartyCookies(boolean accept)

11、setUseWideViewPort(boolean use)

12、setSupportMultipleWindows(boolean support)

13、setLayoutAlgorithm(LayoutAlgorithm l)

14、setStandardFontFamily(String font)

15、setFixedFontFamily(String font)

16、setSansSerifFontFamily(String font)

17、setSerifFontFamily(String font)

18、setCursiveFontFamily(String font)

19、setFantasyFontFamily(String font)

20、setMinimumFontSize(int size)

21、setMinimumLogicalFontSize(int size)

22、setDefaultFontSize(int size)

23、setDefaultFixedFontSize(int size)

24、setLoadsImagesAutomatically(boolean flag)

25、setBlockNetworkImage(boolean flag)

26、setBlockNetworkLoads(boolean flag)

27、setJavaScriptEnabled(boolean flag)

28、setAllowUniversalAccessFromFileURLs(boolean flag)

29、setAllowFileAccessFromFileURLs(boolean flag)

30、setGeolocationDatabasePath(String databasePath)

31、setAppCacheEnabled(boolean flag)

32、setAppCachePath(String appCachePath)

33、setDatabaseEnabled(boolean flag)

34、setDomStorageEnabled(boolean flag)

35、setGeolocationEnabled(boolean flag)

36、setJavaScriptCanOpenWindowsAutomatically(boolean flag)

37、setDefaultTextEncodingName(String encoding)

38、setUserAgentString(String ua)

39、setNeedInitialFocus(boolean flag)

40、setCacheMode(int mode)

41、setMixedContentMode(int mode)

WebSettings总共有上面所列举的41多个配置方法,但是不是每一个配置都需要去设置,可以根据业务的需求做对应的设置,这里简单介绍几个常用的设置和一些需要根据系统的版本来判断设置项。

1)setSupportZoom:用的比较多的,也很容易理解,设置WebView是否支持使用屏幕控件或手势进行缩放,默认是true,支持缩放。

2)setBuiltInZoomControls:这个属性是需要结合第一个属性一起使用,设置WebView是否使用其内置的变焦机制,该机制集合屏幕缩放控件使用,默认是false,不使用内置变焦机制。

3)setJavaScriptEnabled:用的也比较多,加载H5的页面都需要设置的,设置WebView是否允许执行JavaScript脚本,默认false,不允许

4)setAllowFileAccess:这个属性是设置是否允许访问文件,但是这里指的是系统文件,对应应用内的asset文件是不受限制的。

5)setDomStorageEnabled:这个对应H5的加载是需要的,因为H5的很多数据存储都在localstorage里,设置是否开启DOM存储API权限,默认false,未开启,设置为true;

6)setUserAgentString:用来设置用户代理,我们一般都是把App的一些基本信息通过字符串拼接的方式存储到里面去,让H5读取。

还有些属性根据系统的版本不同设置的,这里通过代码贴下:

// API 19
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    WebView.setWebContentsDebuggingEnabled(true);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    settings.setMixedContentMode(WebSettings.LOAD_NORMAL);
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    settings.setUseWideViewPort(true);
} else {
    settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
}

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    CookieManager.getInstance().setAcceptThirdPartyCookies(this, true);
}

其他的一些属性包括缓存,数据这类的根据需求去设置,业务不同用到的属性设置也不同,建议大家根据业务统一设置一套默认的,然后直接使用就好啦,一些变动的属性可以开出来做灵活变动。