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用法小结的更多相关文章

  1. (转)android webview用法小结

    原文地址:http://blog.csdn.net/ethan_xue/article/details/7841431 将webview里常用的东西拿出来分享下 想要webview加载页面,只需web ...

  2. 转载:Hadoop排序工具用法小结

    本文转载自Silhouette的文章,原文地址:http://www.dreamingfish123.info/?p=1102 Hadoop排序工具用法小结 发表于 2014 年 8 月 25 日 由 ...

  3. [No000010]Ruby 中一些百分号(%)的用法小结

    #Ruby 中一些百分号(%)的用法小结 #这篇文章主要介绍了Ruby 中一些百分号(%)的用法小结,需要的朋友可以参考下 what_frank_said = "Hello!"#% ...

  4. C++ typedef用法小结 (※不能不看※)

    C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...

  5. 函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结 (转)

    函数fgets和fputs.fread和fwrite.fscanf和fprintf用法小结 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符 ...

  6. 1:CSS中一些@规则的用法小结 2: @media用法详解

    第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下     at-rule ...

  7. 英语语法最终珍藏版笔记- 21it 用法小结

    it 用法小结 it 在英语中的意思较多,用法较广,现总结如下. 一.it作句子的真正主语 1.it 指前面已经提到过的人或事物,有时指心目中的或成为问题的人或事物,作真正主语. 例如: What’s ...

  8. [转]ssh常用用法小结

    ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...

  9. 结构体定义 typedef struct 用法详解和用法小结

    typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于:若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,stru ...

随机推荐

  1. 浅谈“be practical and realistic”

    一 “实事求是”这个词,一般认为是古人的一种治学观念,后来经咏芝的发明.阐释.以及“应用”,成为“基本思想路线”(具体可参看大学思想政治教科书),被称为“活的灵魂”.这里不想过多地牵扯政治话题,仅就我 ...

  2. CString-int-string-char-BSTR之间的转换

    一.CString, int, string, char*之间的转换 string 转 CString CString.Format("%s", string.c_str());c ...

  3. Qt之操作数据库(SQLite)

    SQLite 简介 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需 ...

  4. 第二百零一天 how can I坚持

    sql要学的东西还很多,很简单的一个sql都不会写,还得请教别人,哎. 八千代.铜钱草,小叶元宝,绿萝.还有我的鱼,还有罗娜. 今天试用了一下三星,系统优化就是不行啊,掉电太快,想搞个小米5,还想买个 ...

  5. 【原】Hadoop伪分布模式的安装

    Hadoop伪分布模式的安装 [环境参数] (1)Host OS:Win7 64bit (2)IDE:Eclipse Version: Luna Service Release 2 (4.4.2) ( ...

  6. 解决SQLServer2008 Express远程连接出错的问题[Error: 1326错误]

    sqlserver2008 Express版本默认是只能本机测试连接,不能被其他客户端访问,原因是因为Express版本的数据库被连接默认的TCP/IP监听是被关闭的,我们可以做一些设置实现我们的远程 ...

  7. DMOZ介绍以及如何提交

    转载自 http://www.cnblogs.com/freespider/archive/2009/12/28/1633818.html Dmoz介绍及怎么提交? 1.Dmoz目录简介: Dmoz是 ...

  8. C#委托及事件处理机制浅析

    事件可以理解为某个对象所发出的消息,以通知特定动作(行为)的发生或状态的改变.行为的发生可能是来自用户交互,如鼠标点击:也可能源自其它的程序逻辑.在这里,触发事件的对象被称为事件(消息)发出者(sen ...

  9. 计算直线的交点数(hdu1466简单的dp)

    题意:平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数.比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行). 思路:动态规划,想办法记忆化搜索,当前状态和之前状态结合起来 d ...

  10. java获取数据库的所有列名和对应的数据库类型

    /**     * 连接数据库     * @param driver 数据库的驱动类     * @param url 数据库的地址     * @param userName 数据库的用户名   ...