WebViewd的基本使用
在布局文件中写入WebView:xml部分如下代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webview"
/>
</LinearLayout>
加载网页使用loadUrl()
webView = (WebView) findViewById(R.id.webview);
webView.loadUrl("http://my.oschina.net/nmxsu");
//此处网页可以为任意 例如:webView.loadUrl("www.baidu.com");
获取网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
WebView显示网页
本地 webView.loadUrl(“file:///android_asset/XX.html“);
网络 webView.loadUrl("www.baidu.com")
在WebView中使用JavaScript
如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript。一旦使能之后,你也可以自己创建接口在你的应用和JavaScript代码间进行交互。
//启用支持JavaScript
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
定义WebView打开特定的网页
//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
//webviewClient 帮助webview去处理一些页面控制和请求通知
});
浏览网页历史回退 当你的WebView覆写了URL载入的行为,它会自动地对访问过的网页积累一个历史,你可以利用 goBack() 和 goForward()方法在这个历史中前进或后退。
//改写物理按键--返回的逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Toast.makeText(this, webView.getUrl(), Toast.LENGTH_LONG).show();
if (webView.canGoBack()) {
webView.goBack();//返回上一页面
return true;
} else {
System.exit(0);//退出程序
}
}
return super.onKeyDown(keyCode, event);
}
WebView加载页面使用缓存加载
//webview加载页面优先使用缓存加载
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
//newPrograss 1~100之间的整数
if (newProgress == 100) {
//网页加载完毕关闭ProgressDialog
closDialog();
} else {
//网页正在加载 打开ProgressDialog
openDialog(newProgress);
}
}
private void closDialog() {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
dialog = null;
}
}
private void openDialog(int newProgress) {
if (dialog == null) {
dialog = new ProgressDialog(MainWebview.this);
dialog.setTitle("正在加载");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(newProgress);
dialog.show();
} else {
dialog.setProgress(newProgress);
}
}
});