Android平台下 Webview加载h5页面,交互,及本地化缓存

原创
2017/09/06 17:24
阅读数 381

webview常用于加载一些和iOS公用或者格式比较复杂的页面,像新闻详情页面,由于图片和文字位置,数量都不确定,导致在android下xml没办法编写。

使用的话也是非常简单,在xml文件中直接引用<WebView>控件即可。在类中的使用方法,

WebSettings settings = webview.getSettings();
settings.setWebChromeClient(new WebChromeClient() {
});
settings.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }
});
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccess(true);// 允许访问文件   
settings.setBuiltInZoomControls(true);// 设置显示缩放按钮   
settings.setSupportZoom(true);// 支持缩放 
settings.setTextSize(); // 这里的设置字体大小并不指字号,textSize形式的属性,共有5个,需要用到的可以自己查看设置
settings.setAllowFileAccess(true);// 允许访问文件   
settings.setBuiltInZoomControls(true);// 设置显示缩放按钮   
settings.setSupportZoom(true);// 支持缩放
//********************************************* 需要支持缓存的设置
// 设置支持本地存储
settings.setDatabaseEnabled(true);
//取得缓存路径
String path = getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath();
//设置路径
settings.setDatabasePath(path);
//设置支持DomStorage
settings.setDomStorageEnabled(true);
//设置存储模式
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
//设置缓存
settings.setAppCacheEnabled(true);
webView.requestFocus();
//***********************************************
webView.loadUrl("www.baidu.com"); // 加载普通网页,
webView.loadData(); // </p> 
webView.loadDataWithBaseURL(); // 返回的html标签,本地解析  ,不同的加载方式,可能理解有错误,谨慎使用
// 如果有页面交互的话需要写接口调用了
webView.addJavascriptInterface(new XXXXJavascriptInterface(),"h5");
// 设置顶部进度条,比例按照参数计算就行了
fullWebView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        super.onProgressChanged(view, newProgress);
    }
});
 大概

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
本地缓存推荐通过shouldInterceptRequest 拦截资源的方式,这样比较方便,耦合比较小; 我这封装一个库,https://github.com/yale8848/CacheWebView 欢迎大家拍砖讨论
2017/10/26 21:43
回复
举报
更多评论
打赏
1 评论
0 收藏
0
分享
返回顶部
顶部