恢弘志士之气,不宜妄自菲薄。这篇文章主要讲述Android WebView的使用相关的知识,希望能为你提供帮助。
WebView是View的一个子类,使用它可以在App中嵌入H5页面,可以跟js互相调用。
webview有两个方法:setWebChromeClient和setWebClient
setWebClient:主要处理解析、渲染网页等浏览器做的事情
setWebChromeClient:辅助WebView处理javascript的对话框,网站图标、网站title和加载进度等
WebViewClient就是帮助WebView处理各种通知、请求事件
使用WebView的时候,必须在androidManifest.xml设置访问网络权限:
< uses-permission android:name="android.permission.INTERNET" />
控件
< WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent"> < /WebView>
用途一:加载本地/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); returntrue; } });
用途三:如果访问的页面中有Javascript,则webview必须设置支持Javascript
//启用支持javascript WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true);
用途四:如果希望浏览网页时后退不是退出浏览器,则需要WebView覆盖URL加载,自动生成历史访问记录
@Override public 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); }
【Android WebView的使用】用途五:判断页面加载过程
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); //支持js setPluginsEnabled(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); //支持自动加载图片
推荐阅读
- Android 基础
- Android网络编程源码解析Retrofit
- 安卓onTextChanged参数解释及实现EditText字数监听 Editable使用
- Android手机自动化测试真机运行
- 转Android ADB命令大全
- android Seekbar 拖动按钮显示不全问题
- android mediarecorder例子
- android播放视频用法示例
- android播放音频用法示例