Android WebView的使用(一)

WebView的基本使用:


1.需要在AndroidManifest.xml中添加权限

<uses-permission android:name="android.permission.INTERNET" ></uses-permission>


2.在xml布局文件中添加WebView控件

<RelativeLayout 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"
    tools:context="com.example.webviewjs.MainActivity$PlaceholderFragment" >

    <WebView 
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
    

</RelativeLayout>

3.加载网页,使用loadUrl


<span style="white-space:pre">	</span>mWebView = (WebView)findViewById(R.id.webview);
//      mWebView.loadUrl("http://192.168.1.104:8080/Clouda/www/index.html");
        mWebView.loadUrl("file:///android_asset/www/index.html");

设置WebView要显示的网页方法有很多:

互联网页面直接用: 

mWebView.loadUrl("http://192.168.1.104:8080/Clouda/www/index.html");

本地文件用:

mWebView.loadUrl("file:///android_asset/www/index.html");
  本地文件存放在:assets文件中。

还可以直接载入html的字符串,如:

String htmlString = "<h1>Title</h1><p>This is HTML text<br /><i>Formatted in italics</i><br />Anothor Line</p>";
// 载入这个html页面
myWebView.loadData(htmlString, "text/html", "utf-8");


4.如果访问页面中有JS,必须使WebView支持JS

mWebView.getSettings().setJavaScriptEnabled(true);


基本上到这里就可以运行加载页面成功了,但是我们点击页面链接是发现会调用系统的浏览器来加载,所以要想使用WebView加载还需设置如下:

5.重写WebViewClient类的shouldOverrideUrlLoading函数,使用WebView加载Url

mWebView.setWebViewClient(new WebViewClient(){       
            public boolean shouldOverrideUrlLoading(WebView view, String url) {       
                view.loadUrl(url);       
                return true;       
            }       
        });  


6.当我们点击页面链接跳到其他页面时,点击Back按钮发现退出应用了,我们要让它退回前一页面,设置如下

public boolean onKeyDown(int keyCode, KeyEvent event) {       
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {       
            mWebView.goBack();       
                   return true;       
        }       
        return super.onKeyDown(keyCode, event);       
    } 

mWebView.goBack();      //向后浏览历史页面
mWebView.canGoBack();
mWebView.goForward();      //向前浏览历史页面
mWebView.canGoForward()
mWebView.clearCache();      //清除缓存

7. webView.stopLoading()停止加载页面


8.设置滚动条风格

mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
如果想取消滚动条,在布局文件中加上
android:scrollbars="none"


9.WebSettings : WebView组件有一个辅助类叫WebSettings,它管理WebView的设置状态

//得到WebSettings对象,设置支持Javascript的参数
mWebView.getSettings().setJavaScriptEnabled(true);
//设置可以支持缩放
mWebView.getSettings().setSupportZoom(true);
//设置默认缩放方式尺寸是far
mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
//设置出现缩放工具
mWebView.getSettings().setBuiltInZoomControls(true);

在设置缩放时,如果HTML页面也设置,则代码设置的没有效果。


WebView与JS交互

<span style="font-size:18px;">mWebView.addJavascriptInterface(new Object() { 

            public void clickOnAndroid(final int i) { 

                mHandler.post(new Runnable() { 

                    public void run() { 

                    	mWebView.loadUrl("javascript:test('aa')");
                        Toast.makeText(MainActivity.this, "测试调用java " + i, Toast.LENGTH_LONG).show();
                        
                    } 

                }); 

            } 

        }, "demo");
    }</span>

addJavascriptInterface(Object obj,String interfaceName),该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是 interfaceName(demo),作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过 javascript:window.demo访问到绑定的java对象了,下面来看看HTML代码。


<body>
    This is my HTML page. <br>
    
    <div id='b'><a οnclick="window.demo.clickOnAndroid(2)" id="aaa">Hello World</a></div>
    <br><br><br><br>
    <input type="text" name="aaaa" value="" />
    
    
    <script>
    function test(aa) {       
                    input=document.getElementsByName("aaaa");
    				input[0].value=aa;  
                }  
    </script>
  </body>

HTML页面可以通过
"window.demo.clickOnAndroid(2)"
来调用Java代码,同样Java代码也可以调用JS代码

<span style="font-size:18px;">mWebView.loadUrl("javascript:test('aa')");</span>




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值