您的位置:首页 > 移动开发

Android WebView的使用

2016-12-03 14:02 274 查看
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);
return  true;
}
});


用途三:如果访问的页面中有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);
}


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

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

} else {
// 加载中

}

}
});


[b]用途六:使用缓存[/b]

优先使用缓存

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);  //支持自动加载图片


程序猿必读
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: