使用android.webkit.WebView控件

在xml布局文件中定义

<WebView

  android:id=”@+id/webkit01”

  android:layout:width=”fill_parent”

  android:layout:height=”fill_parent”

  android:layout:weight=”1” />

在程序中使用WebView

mWebView = (WebView) findViewById(R.id.webview01);

mWebView.loadUrl(“http://www.google.com”);

通过WebSettings来设置WebView的属性和状态

WebSettings webSettings = mWebview.getSettings();

当WebView销毁后,再使用WebSettings会抛出IllegalStateException异常。

WebSettings常用方法

1. setAllowFileAccess, 启用/禁止WebKit访问文件数据

2. setBlockNetworkImage, 是否显示网络图像

3. setBuiltInZoomControls, 是否支持缩放

4. setCacheMode, 设置缓存模式

5. setDefaultFontSize, 设置默认字体大小

6. setDefaultTextEncodingName, 设置默认的解码方式

7. setFixedFontFamily, 设置固定使用的字体

8. setJavaScriptEnabled, 是否支持JavaScript

9. setLayoutAlgorithm, 设置布局方式

10. setLightTouchEnabled,

11. setSupportZoom, 是否支持变焦

 

使用WebViewClient

WebViewClient用来处理各种通知、请求等事件,WebView调用setWebViewClient()来指定一个WebViewClient对象。

WebViewClient常用方法

1. doUpdateVisitedHistory, 更新历史记录

2. onFormResubmission, 重新请求网页数据

3. onLoadResource, 加载资源

4. onPageFinished, 网页加载完毕

5. onPageStarted, 网页开始加载

6. onReceivedError, 报告错误信息

7. onScaleChanged, 发生Scale改变

8. shouldOverrideUrlLoading, 控制新的连接在当前WebView中打开

 

使用WebChromeClient

WebChromeClient用来处理JavaScript对话框、网站图标、网站title、加载进度等。

WebChromeClient常用方法

1. onCloseWindow,

2. onCreateWindow,

3. onJsAlert,

4. onJsConfirm,

5. onJsPrompt,

6. onProgressChanged,

7. onReceivedIcon,

8. onReceivedTitle,

9. onRequestFocus

 

示例:实现简单浏览网页的功能

// 点击返回键返回到前一个页面

if((keyCode==KeyEvent.KEYCODE_BACK) && (mWebView.canGoBack()))

  mWebView.goBack();

// 学习如何处理JavaScript常用对话框

WetSettings webSettings = mWebView.getSettings();

webSettings.setJavaScriptEnabled(true);

webSettings.setAllowFileAccess(true);

webSettings.setBuiltInZoomControls(true);

// 设置WebViewClient

mWebView.setWebViewClient(new WebViewClient(){

  public boolean shouldOverrideUrlLoading(WebView view, String url) {

    view.loadUrl(url);

    return true;

  }

  // onPageFinished

  public void onPageFinished(WebView view, String url) {

    super.onPageFinished(view, url);

  }

  // onPageStarted

  public void onPageStarted(WebView view, String url, Bitmap favicon) {

    super.onPageStarted(view, url, favicon);

  }

});

// 设置WebChromeClient

mWebView.setWebChromeClient(new WebChromeClient(){

// 处理JavaScript中的alert

public boolean onJsAlert(WebView view, String url, String msg, fianl JsResult result) {

  // 弹出对话框 builder.show()

  // 确定

  result.confirm();

  return true;

}

// 处理JavaScript中的confirm

public boolean onJsConfirm(WebView view, String url, String msg, fianl JsResult result) {

  // 弹出对话框 builder.show()

  // 确定

  result.confirm();

  // 否定

  result.cancel();

  return true;

}

// 处理JavaScript中的prompt

public boolean onJsPrompt(WebView view, String url, String msg, String defaultValue, fianl JsPromptResult result) {

  // 弹出对话框 builder.show()

  // 确定

  result.confirm(value);

  // 否定/取消

  result.cancel();

  return true;

}

// 处理网页加载进度条

public void onProgressChanged(WebView view, int newProgress) {

  getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100);

  super.onProgressChanged(view, newProgress);

}

// 得到网页的标题,设置app的标题title。

public void onReceivedTitle(WebView view, String title) {

  setTitle(title);

  super.onReceivedTitle(view, title);

}

});

// 连接按钮点击事件处理程序

String url = mUrlBox.getText().toString();

if(URLUtil.isNetworkUrl(url)){

  mWebView.loadUrl(url);

}

// 点击返回按键

public boolean onKeyDown(int keyCode, KeyEvent event) {

  if(keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {

    mWebView.goBack();

    return true;

  }

  return super.onKeyDown(keyCode, event);

}

 

// 示例代码:弹出对话框

final View dialogView = mInflater.inflate(R.layout.xxx, null);

Builder builder = new Builder(mContext);

builder.setTitle(“xxx”);

builder.setView(dialogView);

// 肯定

builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnclickListener(){

  public void onClick(DialogInterface dialog, int which) {

 

  }

});

// 否定

builder.setNegativeButton(android.R.string.cancel, new AlertDialog.OnclickListener(){

  public void onClick(DialogInterface dialog, int which) {

 

  }

});

// 取消

builder.setOnCancelListener(new AlertDialog.OnCancelListener(){

  public void onClick(DialogInterface dialog, int which) {

 

  }

});

// 不允许取消

builder.setCancelable(false);

builder.create();

builder.show();

return true;

android.webkit.WebView/WebViewClient/WebChromeClient的更多相关文章

  1. "android.uid.systemandroid.view.InflateException: Binary XML file line #7: Error inflating class android.webkit.WebView

    在android源码中编译app通过,运行时出现错误: "android.uid.systemandroid.view.InflateException: Binary XML file l ...

  2. WebView WebViewClient WebChromeClient

    在android中,浏览器的功能分成几个部分,每个部分分工明确,互相协作.其中: 1. WebView :专门负责网页数据解析和渲染: 2. WebViewClient :帮助WebView处理各种请 ...

  3. Android之WebView的使用样例——WebSetting、WebViewClient、WebChromeClient

    点击查看原文 代码直接下载http://download.csdn.net/detail/metis100/8514837 第一步,xml Manifest中要设置网络权限,否则会出先 webpage ...

  4. android使用Webview上传图片

    package com.example.webview; import java.io.File; import android.net.Uri;import android.os.Bundle;im ...

  5. Android之 -WebView实现离线缓存阅读

    前言 本篇博客要实现的是一个离线下载和离线阅读的功能,这是很多阅读类app都常见的一个功能,典型的应用就是网易新闻.什么是离线下载?其实这个概念是比较模糊,是离线之后下载呢,还是下载之后离线,但稍微有 ...

  6. Android:WebView(慕课网)

    使用webview最重要的三点: 1 WebView加载本地资源(webView.loadUrl("file:///android_asset/example.html");) 2 ...

  7. Android之webview详解

    文章大纲 一.webview基本介绍1.什么是webview2.为什么要使用webview3.webview基本操作 二.webview高级使用1.WebView状态2.资源加载3.WebView加载 ...

  8. Android 使用WebView显示网页

    构建WebView就可以显示Web信息.因为我觉得这里会讲述很多方式来实现WebView,所以我决定为每一种方式创建一个对应的Activity,MainActivity通过Button可以点击进入对应 ...

  9. Android Internet - WebView 的使用

    WebView是Android 提供的操作网页的一个组件. 用于浏览网页及其它Internet资源. 这里总结了一些WebView 的经常使用接口.和2个小演示样例程序用于自己开发时直接使用.就不用再 ...

随机推荐

  1. 【spring cloud】【IDEA】【maven】spring cloud多模块在idea上使用maven插件打包报错:程序包XXX不存在

    >>>>spring cloud 多模块 >>>>在idea上使用maven插件打包,欲打包成jar包后 进行部署 >>>> 报 ...

  2. 关于Themleaf学习总结

    此篇记录学习Themleaf测试的相关用例: study01 Thymeleaf 的HelloWorld级别的例子 简单介绍Thymeleaf的工作流程 study02 使用spring.thymel ...

  3. Go 语言简介(上)— 语法

    周末天气不好,只能宅在家里,于是就顺便看了一下Go语言,觉得比较有意思,所以写篇文章介绍一下.我想写一篇你可以在乘坐地铁或公交车上下班时就可以初步了解一门语言的文章.所以,下面的文章主要是以代码和注释 ...

  4. 【BZOJ】【2738】&【Tsinsen】【A1333】矩阵乘法

    整体二分+树状数组 过了[BZOJ][2527][POI2011]Meteors以后这题就没那么难啦~ 关键是[从小到大]依次插入数字,然后整体二分每个查询的第k大是在第几次插入中被插入的……嗯大概就 ...

  5. 如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)

    转自:http://blog.csdn.net/jiangqin115/article/details/42684017 UTF-8编码的文本文档,有的带有BOM (Byte Order Mark, ...

  6. SQL查询今天、昨天、7天内、30天【转】

    SQL查询今天.昨天.7天内.30天 今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0 昨天的所有数据:sele ...

  7. iOS开发-多线程之GCD(Grand Central Dispatch)

    Grand Central Dispatch(GCD)是一个强有力的方式取执行多线程任务,不管你在回调的时候是异步或者同步的,可以优化应用程序支持多核心处理器和其他的对称多处理系统的系统.开发使用的过 ...

  8. Divide Two Integers leetcode java

    题目: Divide two integers without using multiplication, division and mod operator. 题解: 这道题我自己没想出来...乘除 ...

  9. 校验IPv4和IPv6地址和URL地址

    1.校验IPV4地址: function validateIp(obj) { var ip=$(obj).val(); var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;// ...

  10. python3 识别图片文字

    1.下载相关组件 安装:pip install Pillow 或下载:https://pypi.org/project/Pillow/5.2.0/  ,https://pypi.org/project ...