现在的位置: 首页 > 综合 > 正文

android webview经验总结

2013年09月03日 ⁄ 综合 ⁄ 共 2530字 ⁄ 字号 评论关闭

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

    }

抱歉!评论已关闭.