Android学习笔记--Webview组件学习

  WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,还可以与JS交互

 1 package com.wuxianedu.webviewa;
 2 
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.webkit.JavascriptInterface;
 7 import android.webkit.WebSettings;
 8 import android.webkit.WebView;
 9 import android.widget.Toast;
10 
11 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
12 
13     private WebView webView;
14 
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         WebView webView = new WebView(this);
20         webView = (WebView) findViewById(R.id.wv_view);
21         Initialize();
22         //findViewById(R.id.but_id).setOnClickListener(this);
23         //载入网址
24         webView.loadUrl("http://www.xiaodao.la/");
25 
26     }
27 
28     private void Initialize() {
29         /**
30          * 30-31行代码
31          * 使webview支持JavaScript脚本
32          */
33         WebSettings webSettings = webView.getSettings();
34         webSettings.setJavaScriptEnabled(true);
35         //此处大致意思就是,第一个参数是一个对象,第二个参数是对象的名字,在JS里面如果要调用此对象,就要用到这个名字,
36       //  webView.addJavascriptInterface(new ReferenceClass(),"jsListener");
37     }
38 
39     @Override
40     public void onClick(View v) {
41         
42     }
43 
44     //内部类
45     class ReferenceClass{
46         //在Android4.2之后,需要添加这个注解
47         @JavascriptInterface
48         //新建一个方法,方法名就是JS中调用的方法名
49         public void fun1FromAndroid(String message){
50             Toast.makeText(MainActivity.this, "fun1FromAndroid:"+message, Toast.LENGTH_SHORT).show();
51         }
52         //zeg
53         @JavascriptInterface
54         //新建一个方法,方法名就是JS中调用的方法名
55         public void fun2FromAndroid(String message){
56             Toast.makeText(MainActivity.this, "fun1FromAndroid:"+message, Toast.LENGTH_SHORT).show();
57         }
58     }
59 }

布局文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="vertical"
 7     tools:context="com.wuxianedu.webviewa.MainActivity">
 8 
 9     <Button android:id="@+id/but_id"
10         android:layout_width="match_parent" android:text="点我调用JS方法"
11         android:layout_height="wrap_content" />
12     <WebView android:id="@+id/wv_view"
13         android:layout_width="match_parent"
14         android:layout_height="match_parent"/>
15 
16 </LinearLayout>

html文件

 1 <html>
 2 
 3 <head>
 4     <meta charset="utf-8">
 5 </head>
 6 
 7 <body>
 8 <div id="helloweb"></div>
 9 <br/>
10 <h1>
11 <a >js中调用本地方法(方法一)</a>
12 </h1>
13 <br/>
14 <a id="aid">js中调用本地方法(方法一.1)</a>
15 <script>
16         function funFromjs(){
17             document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";
18         }
19 
20         //JavaScript代码与java代码进行通信  -- start
21         //getElementsByTagName('a'):获取标签为a数组
22         var aTag = document.getElementsByTagName('a')[0];
23         aTag.addEventListener('click', function(){
24             //调用android本地方法
25             jsListener.fun1FromAndroid("调用android本地方法fun1FromAndroid(String name)!!");
26             return true;
27         }, false);
28 
29         //getElementById('aid'):获取id为aid的元素
30         var aTag = document.getElementById("aid")
31         aTag.addEventListener('click', function(){
32             //调用android本地方法
33             jsListener.fun1FromAndroid("本地方法fun1FromAndroid(String name)");
34             return true;
35         }, false);
36 
37         //JavaScript代码与java代码进行通信  -- end
38     </script>
39 
40 <br/><br/>
41 <a  onclick="javascript:jsListener.fun2FromAndroid('您好,android')">js中调用本地方法(方法二)</a>
42 </body>
43 </html>
原文地址:https://www.cnblogs.com/langfei8818/p/5969387.html