zoukankan      html  css  js  c++  java
  • Android 控件八 WebView 控件

    前言

    本文简记 Android 控件 WebView 的常用属性及使用方法。

    常用属性

    基础属性

    • 请参阅:Android 布局与相关属性 的基础属性部分。

      包括:id 属性,宽度、高度属性,背景属性,内、外边距属性等。

    Java 于 WebView

    WebView 控件绝大部分设置,都是通过 Java 执行的。

    设置支持 JS

    WV_Internet.getSettings().setJavaScriptEnabled(true)
    

    返回 WebView 控件上级页面

    默认情况下,使用 WebView 控件浏览网页时,点击菜单返回键,直接退出 WebView 控件(结束对应 Activity 活动),而不是返回 WebView 控件上级页面。

    • 重写方法

      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
      	return super.onKeyDown(keyCode, event);
      }
      

      才能在点击菜单返回键,在存在返回空间时,返回上级 URL 页面。

    • 示例:

      • keyCode == KeyEvent.KEYCODE_BACK :判断按下键是否为菜单返回键。

      • .canGoBack() :判断是否有返回空间,有则返回 true ,无则返回 false 。

      • .goBack() :返回上一级页面。

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

    访问本地 HTML 文件

    创建 assets 资源文件夹

    可以被看做随应用打包的微型文件系统,支持任意层次的文件目录结构。assets目录中的所有文件都会随应用打包。在assets导入后,为了访问assets需要一个AssetManager类,这个类可以从Context类中获取。

    • “右键 main 文件夹 -> New -> Floder -> Assets Floder” ,即可创建 assets 资源文件夹。

    • 在 assets 文件夹下创建一个 HTML 文件。

      示例:

      <html>
      <head>
      
      </head>
      <body>
      Yogile Hello World.
      <br>
      HTML
      </body>
      </html>
      

    WebView 访问本地 HTML 文件

    • .loadUrl(); 方法实现访问本地 HTML 文件。

    • 格式:

      • 注意:字符串应该是:file:///android_asset/ 再加上你的文件在 assets 文件夹下的路径
      WB_Local.loadUrl("file:///android_asset/helloworld.html");
      

    访问网络 HTML 文件

    Android APP 获得权限

    要在 WebView 控件中访问互联网网页 URL ,需要网络请求授权。

    WebViewClient 类

    • 可以使用

      WebView WV_Internet = findViewById(R.id.WV_Internet);
      
      WV_Internet.setWebViewClient(new WebViewClient() {
      	......
      });
      

      来重写方法实现一些功能。

    • 常用重写的方法:

      描述 方法
      开始加载 URL 操作方法 public void onPageStarted(WebView view, String url, Bitmap favicon)
      结束加载 URL 操作函数 public void onPageFinished(WebView view, String url)
      对 UrlLoading 进行拦截 public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)

    允许二级 URL 运行

    • 如果不设置运行二级 URL 运行的话,当在 WebView 中点击跳转到二级 URL 运行时,系统会拦截访问,并询问是否使用自带的浏览器打开。

    • 使用 “对 UrlLoading 进行拦截” 的方法,在方法中执行 view.loadUrl(); 访问二级 URL 网页。

    • 示例:

      WV_Internet.setWebViewClient(new WebViewClient() {
      	@Override
              public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                  view.loadUrl(request.getUrl().toString());
                  return super.shouldOverrideUrlLoading(view, request);
              }
      });
      

    WebChromeClient 类

    • 可以使用

      WebView WV_Internet = findViewById(R.id.WV_Internet);
      
      WV_Internet.setWebChromeClient(new WebChromeClient() {
      	......
      });
      

      来重写方法实现一些功能。

    • 常用重写的方法:

      描述 方法
      监听进度函数 public void onProgressChanged(WebView view, int newProgress)
      获取 Web URL 网页的 <title> 标签值 public void onReceivedTitle(WebView view, String title)
      实现 Native 与 JS 通信 public boolean onJsAlert(WebView view, String url, String message, JsResult result)
      同上 public boolean onJsConfirm(WebView view, String url, String message, JsResult result)
      同上 public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result)

    APP title 为 URL title

    • 使用 “获取 Web URL 网页的 <title> 标签值” 的方法,在方法中执行 setTitle(title); ,将 APP title 设为 URL title。

    • 示例:

      WV_Internet.setWebChromeClient(new WebChromeClient() {
      	@Override
      	public void onReceivedTitle(WebView view, String title) {
      		super.onReceivedTitle(view, title);
      		setTitle(title);
      	}
      });
      
    • 当然,由于一般一个 WeView 控件对应一个 Activity ,所以退出 WeView 控件(结束对应 Activity 活动)后,原先 Activity 默认的 title 不会变。

      title 显示就会恢复。

    实例

  • 相关阅读:
    Hibernate3.3 中常见错误
    Hibernate Tools for Eclipse插件的安装和使用
    写个换房(先卖后买)退个人所得税的攻略 (转)
    Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
    用SQL删除重复记录的N种方法
    Spring中ref local与ref bean区别
    Nginx反向代理
    文件上传
    linux 进程
    pdo
  • 原文地址:https://www.cnblogs.com/Yogile/p/13160307.html
Copyright © 2011-2022 走看看