zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    javascript获取url地址问好后面的值,包括问号
    给Object扩展新方法
    关于hasOwnProperty()方法的应用
    javascript if 与 if else 的一点小认识
    express中路由设置的坑-----1
    javascript数组顺序-----1冒泡的另一种比较好理解的写法
    进程的控制与状态细化
    进程的定义与控制
    进程的定义与控制
    进程引入
  • 原文地址:https://www.cnblogs.com/langfei8818/p/5969387.html
Copyright © 2011-2022 走看看