Android-WebView详解

本文详细介绍了Android WebView的使用,包括WebSettings的缓存模式设置,如何进行离线加载,结合WebViewClient和WebChromeClient实现功能。还提到了Android调用JS的注意事项,以及前进、后退、清除缓存数据的方法。此外,文章讨论了WebView的状态管理,如onResume、onPause、pauseTimers和resumeTimers。同时,提供了判断WebView滚动位置、避免内存泄露的策略以及处理返回键的示例代码。
摘要由CSDN通过智能技术生成

WebSettings

WebSettings webSettings = mWebView.getSettings();
webview.requestFocusFromTouch();//支持获取手势焦点,输入用户名、密码或其他
setJavaScriptEnabled(true);//支持js
setPluginsEnabled(true);//支持插件 
webSettings.setRenderPriority(RenderPriority.HIGH);//提高渲染的优先级设置自适应屏幕,两者合用
setUseWideViewPort(true);//将图片调整到适合webview的大小
setLoadWithOverviewMode(true);// 缩放至屏幕的大小
setSupportZoom(true);//支持缩放,默认为true。是下面那个的前提。
setBuiltInZoomControls(true);//设置内置的缩放控件。//若上面是false,则该WebView不可缩放,这个不管设置什么都不能缩放。
setDisplayZoomControls(false);//隐藏原生的缩放控件setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);//支持内容重新布局 supportMultipleWindows();//多窗口 
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//关闭webview中缓存 
setAllowFileAccess(true);//设置可以访问文件 
setNeedInitialFocus(true);//当webview调用requestFocus时为webview设置节点setJavaScriptCanOpenWindowsAutomatically(true);//支持通过JS打开新窗口 setLoadsImagesAutomatically(true);//支持自动加载图片
setDefaultTextEncodingName("utf-8");//设置编码格式

关于缓存
缓存模式
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
LOAD_DEFAULT: (默认)根据cache-control决定是否从网络上取数据。
LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。

  • 结合使用(离线加载):
    if (NetStatusUtil.isConnected(getApplicationContext())) {
            webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
    //根据cache-control决定是否从网络上取数据。
    }else {
           webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    //没网,则从本地获取,即离线加载
    }
    webSettings.setDomStorageEnabled(true);// 开启 DOM storage API 功能webSettings.setDatabaseEnabled(true);//开启 database storage API 功能
    webSettings.setAppCacheEnabled(true);//开启 Application Caches 功能
    String cacheDirPath = getFilesDir().getAbsolutePath() + APP_CACAHE_DIRNAME;
    webSettings.setAppCachePath(cacheDirPath);//设置  Application Caches 缓存目录
    **注意:**每个 Application 只调用一次 WebSettings.setAppCachePath(),WebSettings.setAppCacheMaxSize()
    加载方式
    **加载一个网页:**
    webView.loadUrl("[http://www.google.com/](http://www.google.com/)");
    **加载apk包中的一个html页面**
    webView.loadUrl("file:///android_asset/test.html");
    **加载手机本地的一个html页面的方法:**
    webView.loadUrl("content://com.android.htmlfileprovider/sdcard/test.html");
    WebViewClient
    **WebViewClient就是帮助WebView处理各种通知
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值