android webview经验总结

转自: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);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值