转自:http://spooking.tk/post-34.html
Web page not available错误
----------------------
在AndroidManifest.xml中使用许可"android.permission.INTERNET"
<uses-permission android:name="android.permission.INTERNET" />
在orientation转换时不会重新载入url
----------------------
1. AndroidManifest.xml 中的Activity加入:
android:configChanges="orientation|keyboardHidden"
说明我们程序自己处理 orientation|keyboardHidden 的config change
2. override Activity class 的 onConfigurationChanged 方法
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
载入本地的url资源
--------------------------------
1. 把文件 (demo.html) 放到 assets 文件夹下
2. 用 mWebView.loadUrl("file:///android_asset/demo.html");
载入本地文件,本地html文件的 img 的 src 可以指向网络
本地html文件的 script 的 src 可以指向网络
载入 css 样式
-----------------------------
在Android 1.5 用 mWebView.loadUrl("file:///android_asset/index.html");
的时候, html文件里面的 CSS 要用 <link> 来引入,
<link rel="stylesheet" type="text/css" href="css/common/iui/iuix.css"></link>
而不能用 <style> import 来引入:
<style type="text/css" media="screen">@import "css/common/iui/iuix.css";</style>
但是如果 html 是远程的,则不会出现这个问题。
在 java 类中访问javascript
--------------------------------
mWebView.loadUrl("javascript:wave()");
可以用这种方式把一大段 js 代码load 到当前的窗口
在 javascript 中访问 java对象的方法
------------------
1. java 中 mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
并在DemoJavaScriptInterface 类中 定义 clickOnAndroid 方法
2. javascript 中 <a onClick="window.demo.clickOnAndroid()">
webview常用功能设置
// 不支持多窗口显示
mWebView.getSettings().setSupportMultipleWindows(false);
// 页面不可缩放
mWebView.getSettings().setSupportZoom(false);
// 显示图像
mWebView.getSettings().setBlockNetworkImage(false);
// 缓存模式
mWebView.getSettings().setCacheMode(1);
// 支持js
mWebView.getSettings().setJavaScriptEnabled(true);
// 取消触摸焦点
mWebView.setFocusable(false);
// 允许弹出对话框
mWebView.setWebChromeClient(new WebChromeClient());
// 取消滚动条
mWebView.setVerticalScrollBarEnabled(false);
// 设置滚动条
mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
//要在当前webview中打开链接,而不是在新开系统的browser中打开该链接,必须覆盖webview的WebViewClient对象。
mWebView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
重写onKeyDown事件
//如果希望浏览的网页回退而不是退出webview,需要在当前Activity中处理该Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}