博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android WebView的使用
阅读量:7048 次
发布时间:2019-06-28

本文共 2585 字,大约阅读时间需要 8 分钟。

WebView是View的一个子类,使用它可以在App中嵌入H5页面,可以跟js互相调用。

webview有两个方法:setWebChromeClient和setWebClient

setWebClient:主要处理解析、渲染网页等浏览器做的事情

setWebChromeClient:辅助WebView处理JavaScript的对话框,网站图标、网站title和加载进度等

WebViewClient就是帮助WebView处理各种通知、请求事件

 

使用WebView的时候,必须在AndroidManifest.xml设置访问网络权限:

控件

 

用途一:加载本地/Web资源

使用WebView的loadUrl()方法

1、加载本地资源

webView = (WebView) findViewById(R.id.webView);webView.loadUrl("file:///android_asset/example.html");

2、加载web资源

webView = (WebView) findViewById(R.id.webView);webView.loadUrl("http://baidu.com");

 

用途二:在app里面直接打开网页

创建一个WebViewClient,通过setWebViewClient关联

webView.setWebViewClient(new WebViewClient(){    @Override    public boolean shouldOverrideUrlLoading(WebView view, String url) {        view.loadUrl(url);        return  true;    }});

 

用途三:如果访问的页面中有Javascript,则webview必须设置支持Javascript

//启用支持javascriptWebSettings settings = webView.getSettings();settings.setJavaScriptEnabled(true);

 

用途四:如果希望浏览网页时后退不是退出浏览器,则需要WebView覆盖URL加载,自动生成历史访问记录

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {    // Check if the key event was the Back button and if there's history    if ((keyCode == android.view.KeyEvent.KEYCODE_BACK) && webView.canGoBack())    {        // 返回键退回        webView.goBack();        return true;    }    // If it wasn't the Back key or there's no web page history, bubble up    // to the default    // system behavior (probably exit the activity)    return super.onKeyDown(keyCode, event);}

 

用途五:判断页面加载过程

webView.setWebChromeClient(new WebChromeClient() {    @Override    public void onProgressChanged(WebView view, int newProgress) {        // TODO Auto-generated method stub        if (newProgress == 100) {            // 网页加载完成        } else {            // 加载中        }    }});

 

用途六:使用缓存

优先使用缓存

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

不使用缓存

webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

 

 

webSetting的其它常用设置:

setJavaScriptEnabled(true);  //支持jssetPluginsEnabled(true);  //支持插件 setUseWideViewPort(false);  //将图片调整到适合webview的大小 setSupportZoom(true);  //支持缩放 setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持内容重新布局  supportMultipleWindows();  //多窗口 setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);  //关闭webview中缓存 setAllowFileAccess(true);  //设置可以访问文件 setNeedInitialFocus(true); //当webview调用requestFocus时为webview设置节点webview webSettings.setBuiltInZoomControls(true); //设置支持缩放 setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口 setLoadWithOverviewMode(true); // 缩放至屏幕的大小setLoadsImagesAutomatically(true);  //支持自动加载图片

 

转载于:https://www.cnblogs.com/longzhongren/p/6128624.html

你可能感兴趣的文章
TC Srm524 Div 1 T3
查看>>
MySQL5.6到5.7版本升级采用IN-PLACE的升级方式需要具体关注的地方
查看>>
深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)
查看>>
js判断重复节点并增加节点的方法
查看>>
Android环境搭建时遇到的问题总结
查看>>
JQuery defaultvalue
查看>>
通过js实现删除功能 ruby on rails
查看>>
spring中InitializingBean接口使用理解(转)
查看>>
bug的处理流程
查看>>
设计模式学习笔记--访问者模式
查看>>
HIbernate 注解 mappedBy 与 inverse
查看>>
团队冲刺第五天
查看>>
js作用域和作用域链
查看>>
ERP流程图
查看>>
10.29 A
查看>>
LOVE2D-03-完整的LOVE2D程序
查看>>
使用safe-rm替代rm
查看>>
Laravel之视图和Blade模板引擎
查看>>
Linux 下开wifi热点
查看>>
Codeforces Round #526 (Div. 1)
查看>>