zoukankan      html  css  js  c++  java
  • Android WebView

    1. 描述
      • WebView是Android系统中内置了的一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。 
    2. 用途
      • 应用内嵌浏览器,并显示网页内容。
      • android 自带的 textview 不支持长按文本复制,webview 自带长按复制文本内容的功能。
      • 应用在内容显示上,对动画的丰富性要求较高,可以使用 webview 加载支持javascript的网页显示动画内容。
    3. 所需应用权限
      • AndroidManifest.xml 需要添加 "android.permission.INTERNET"权限。
    4. 开发相关
      • XML文件中显示webview组件。
        1     <WebView
        2         android:id="@+id/webView"
        3         android:layout_width="match_parent"
        4         android:layout_height="match_parent"/>
      • 加载内容
        1 webView.loadUrl(url);
        2 webView.loadUrl(url, extraHeaders);
        3 webView.loadData(data, mimeType, encoding);
        4 webView.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
      • 设置属性
        1 WebSettings setting = webView.getSettings();
        2 setting.setSupportZoom(true);//支持缩放
        3 setting.setTextSize(TextSize);//页面中字体大小 --TextSize.LARGER
        4 setting.setJavaScriptEnabled(true);//对javascript的支持
      • webview显示网页的前进与后退
         1 webView.canGoBack();
         2 webView.goBack(); //后退
         3 webView.canGoForward();
         4 webView.goForward(); //前进
         5 
         6 //ps:使用webview浏览网页,点击系统“Back”键会finish()activity,因此
         7 //需要拦截返回键的监听
         8 public boolean onKeyDown(int keyCode, KeyEvent event) {       
         9         if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {       
        10             webView.goBack();       
        11                    return true;       
        12         }       
        13         return super.onKeyDown(keyCode, event);       
        14     }     
      • 当网页中有链接时,如果希望不点击链接继续在当前webview里面显示内容,而不是打开系统浏览器或者第三方浏览器,需要设置WebViewClient属性。
        1 webView.setWebViewClient(new WebViewClient(){       
        2                     public boolean shouldOverrideUrlLoading(WebView view, String url) {       
        3                         view.loadUrl(url);       
        4                         return true;       
        5                     }       
        6         });
      • 监听页面中javascript中的简单事件
         1 //demo.html
         2 <html>       
         3   <mce:script language="javascript"><!--     
         4        
         5       function wave() {       
         6           document.getElementById("droid").src="android_waving.png";       
         7       }       
         8              
         9 </mce:script>       
        10       <body>       
        11       <a onClick="window.demo.clickOnAndroid()">       
        12           <img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br>       
        13               Click me!       
        14       </a>       
        15       </body>       
        16 </html> 
        17 
        18 //android代码
        19 public class WebViewDemo extends Activity {        
        20     private WebView mWebView;       
        21     private Handler mHandler = new Handler();       
        22        
        23     public void onCreate(Bundle icicle) {       
        24         super.onCreate(icicle);       
        25         setContentView(R.layout.webviewdemo);       
        26         mWebView = (WebView) findViewById(R.id.webview);       
        27         WebSettings webSettings = mWebView.getSettings();       
        28         webSettings.setJavaScriptEnabled(true);       
        29         mWebView.addJavascriptInterface(new Object() {       
        30             public void clickOnAndroid() {//html中的方法       
        31                 mHandler.post(new Runnable() {       
        32                     public void run() {       
        33                         mWebView.loadUrl("javascript:wave()");       
        34                     }       
        35                 });       
        36             }       
        37         }, "demo");       
        38         mWebView.loadUrl("file:///android_asset/demo.html");       
        39     }       
        40 }

        1、为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html" 
        2、addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的。

      • 对html5视频播放及全屏的支持,需要自定义WebChromeClient,重写onShowCustomView(),和onHideCustomView()方法。

         

      

      

  • 相关阅读:
    【ZYNQ Ultrascale+ MPSOC FPGA教程】第八章FPGA片内FIFO读写测试实验
    【ZYNQ Ultrascale+ MPSOC FPGA教程】第七章 FPGA片内ROM测试实验
    【ZYNQ Ultrascale+ MPSOC FPGA教程】第六章 FPGA片内RAM读写测试实验
    【ZYNQ Ultrascale+ MPSOC FPGA教程】第五章 Vivado下PLL实验
    【ZYNQ Ultrascale+ MPSOC FPGA教程】第四章 PL的LED实验
    在Mac OS X中使用VIM开发STM32(3)
    在Mac OS X中使用VIM开发STM32(2)
    STM32F40xxx 与 STM32F41xxx Flash结构详解
    在Mac OS X中搭建STM32开发环境(3)
    在Mac OS X中搭建STM32开发环境(2)
  • 原文地址:https://www.cnblogs.com/magar/p/4146397.html
Copyright © 2011-2022 走看看