webView用法小结
1、加入权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);
3、设置WebView基本信息:
假设訪问的页面中有Javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
触摸焦点起作用
requestFocus();
取消滚动栏
this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4、设置WevView要显示的网页:
互联网用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets文件里
5、假设希望点击链接由自己处理。而不是新开Android的系统browser中响应该链接。
给WebView加入一个事件监听对象(WebViewClient)
并重写当中的一些方法
shouldOverrideUrlLoading:对网页中超链接button的响应。
当按下某个连接时WebViewClient会调用这种方法,并传递參数:按下的url
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest
6、假设用webview点链接看了非常多页以后。假设不做不论什么处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身。假设希望浏览的网页回退而不是退出浏览器,须要在当前Activity中处理并消费掉该Back事件。
覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。
[java] view plaincopyprint?
public boolean onKeyDown(int keyCoder,KeyEvent event){
if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){
webview.goBack(); //goBack()表示返回webView的上一页面
return true;
}
return false;
}
8、webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
9、
* 通过WebSettings设置WebView的一些属性、状态。通过webView.getSettings获得
比如:setAllowFileAccess(能否訪问文件数据)
setBuiltInZoomControls(设置是否支持缩放)、
setCacheMode(设置缓冲的模式)
setJavaScriptEnabled(设置是否支持JavaScript)........
* 通过WebViewClient来自己定义网页浏览程序。
专门辅助WebView处理各种通知、请求等事件的类。
通过webView.setWebChromeClient获得
方法:
doUpdateVisitedHistory (更新历史记录)
onFormResubmission(应用程序又一次请求网页数据)
onLoadResource(载入指定地址提供的资源)
onPageFinished(网页载入完成)
onPageStarted(网页開始载入)
onReceivedError(报告错误信息)
onScaleChanged(WebView发生改变)
shouldOverrideUrlLoading(控制新的连接在当前WebView中打开)
* WebChromeClient专门用来辅助WebView处理JavaScript的对话框、图标、站点标题、载入进度等。
方法:onCloseWindow(关闭WebView)
onCreateWindow(创建WebView)
onJsAlert(处理Js中的Alert对话框)、onJsConfirm(处理Js中的Confirm对话框)、onJsPrompt(处理JS中的Prompt对话框)
onProgressChanged(载入进度条改变)
onReceivedIcon(网页图标更改)
onReceivedTitle(网页标题更改)
onRequestFocus(WebView显示焦距)
package com.dan;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.URLUtil;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
public class WebActivity extends Activity {
private WebView webView;
private EditText urlEdt;
private Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
urlEdt = (EditText)findViewById(R.id.edt_1);
btn = (Button)findViewById(R.id.btn_1);
webView = (WebView)findViewById(R.id.web);
WebSettings settings = webView.getSettings();
//webView.loadUrl("http://10.0.2.2/affiliate/code/login.php");
//设置支持Js脚本
settings.setJavaScriptEnabled(true);
//设置能够訪问文件
settings.setAllowFileAccess(true);
//支持缩放
settings.setBuiltInZoomControls(true);
//设置WebViewClient
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
});
//设置WebChromeClient
webView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
AlertDialog.Builder alert = new AlertDialog.Builder(WebActivity.this);
alert.setTitle("提示对话框");
alert.setMessage(message).setPositiveButton("确定", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alert.create().show();
return true;
}
@Override
public boolean onJsConfirm(WebView view, String url,
String message, JsResult result) {
return super.onJsConfirm(view, url, message, result);
}
@Override
public boolean onJsPrompt(WebView view, String url, String message,
String defaultValue, JsPromptResult result) {
return super.onJsPrompt(view, url, message, defaultValue, result);
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
WebActivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100);
super.onProgressChanged(view, newProgress);
}
@Override
public void onReceivedTitle(WebView view, String title) {
WebActivity.this.setTitle("中国世贸通加盟管理登录页");
super.onReceivedTitle(view, title);
}
});
btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
String url = urlEdt.getText().toString();
if( URLUtil.isNetworkUrl(url) ){
webView.loadUrl(url);
}else{
urlEdt.setHint("输入的网址错误,请又一次输入");
}
}
});
}
}
* 后退 和 前进 canGoBack 与canGoForward
//后退
if( (keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack() ){
webView.goBack();
return true;
}
将Html代码通过String的形式被载入到WebView中,并且在Html中能够引用存储在设备中的图片资源等。这个方式能够很方便的实现RichTextField的效果,尤其是对某些程序提供一些本地的简单文档时,很方便。
下边是实现这个功能的源码:
public void loadHTML() { final String mimeType = "text/html"; final String encoding = "utf-8"; final String html = "<h1>Header</h1><p>Custom HTML</p> <p><img src=\"file:///android_asset/image1.jpg\" />
</p>"; WebView wv = (WebView) findViewById(R.id.wv1); wv.loadDataWithBaseURL("fake://not/needed", html, mimeType, encoding, ""); } //wView.loadUrl("file:///android_asset/index.html"); -----打开本包内asset文件夹下的index.html文件
//wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html"); -----打开本地sd卡内的index.html文件 //wView.loadUrl("http://wap.baidu.com"); -----打开指定URL的html文件 ......
webView.setInitialScale(30); //这个就是重点。你能够在这里依据需求来设置缩放比例
webView用法小结的更多相关文章
- (转)android webview用法小结
原文地址:http://blog.csdn.net/ethan_xue/article/details/7841431 将webview里常用的东西拿出来分享下 想要webview加载页面,只需web ...
- 转载:Hadoop排序工具用法小结
本文转载自Silhouette的文章,原文地址:http://www.dreamingfish123.info/?p=1102 Hadoop排序工具用法小结 发表于 2014 年 8 月 25 日 由 ...
- [No000010]Ruby 中一些百分号(%)的用法小结
#Ruby 中一些百分号(%)的用法小结 #这篇文章主要介绍了Ruby 中一些百分号(%)的用法小结,需要的朋友可以参考下 what_frank_said = "Hello!"#% ...
- C++ typedef用法小结 (※不能不看※)
C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...
- 函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结 (转)
函数fgets和fputs.fread和fwrite.fscanf和fprintf用法小结 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符 ...
- 1:CSS中一些@规则的用法小结 2: @media用法详解
第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下 at-rule ...
- 英语语法最终珍藏版笔记- 21it 用法小结
it 用法小结 it 在英语中的意思较多,用法较广,现总结如下. 一.it作句子的真正主语 1.it 指前面已经提到过的人或事物,有时指心目中的或成为问题的人或事物,作真正主语. 例如: What’s ...
- [转]ssh常用用法小结
ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...
- 结构体定义 typedef struct 用法详解和用法小结
typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于:若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,stru ...
随机推荐
- Android Activity学习笔记(一)
Activity为Android应用的四大组件之一,提供界面来与用户完成交互等操作.其中Activity的生命周期的知识这里做个笔记. Activity的生命周期由以下几个部分组成: 1.onCrea ...
- Flex通信-Java服务端通信实例
转自:http://blessht.iteye.com/blog/1132934Flex与Java通信的方式有很多种,比较常用的有以下方式: WebService:一种跨语言的在线服务,只要用特定语言 ...
- hadoop2.6.0 --- 64位源代码
今天有朋友在群里找hadoop最新的2.6.0的源代码,其实这个源代码在hadoop的官方网站是有下载的(应该是32位的),还有一个src,不过给的是maven版本,需要自己在机器上编译一下(我的机器 ...
- web缓存值varnish使用
具体的介绍到官网 https://www.varnish-software.com/static/book 一.简介 Varnish is a reverse HTTP proxy, sometime ...
- css font-face自定义字体
font-face:自定义字体 1.找到一个字体文件 2.放入新建的的font的文件夹内: 3.在样式里面以下内容 注释:aa是字体名 <style> @font-face{ fo ...
- Linux中内存查看命令free详解(转)
add by zhj:说了那么多,其实看第一行就足够了,free项就是未使用的内存.其实,我是感觉压根就没必要 使用free命令,用top代替就行了 原文:http://liustb.blog.163 ...
- Clean Code第二章<命名>
1.命名要有意义 错误写法 正确写法 2.某些构造函数可以提供有意义的静态方法去实现
- c语言指针详解(转载)
转自(http://blog.csdn.net/ad_ad_ad/article/details/1522145) 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指 ...
- 创建Android Virtual Device
参考http://book.51cto.com/art/201302/380026.htm Linux版的Android SDK没有提供可视化的AVD Manager管理工具,创建AVD可以使用and ...
- QListWidgetItem带上颜色的问题
new_item = QListWidgetItem(_fromUtf8(item_content), self.listWidget) 首先创建一个QListWidgetItem,第一个参数内容是I ...