WebView可以看做是一个浏览器,它使用了WebKit渲染引擎加载显示网页。

  WebView的使用需要掌握下面几点,

  1,首先需要开启应用网络访问权限

  在AndroidMinafest.xml中添加 <uses-permission android:name="android.permission.INTERNET"/>

  2,加载一个web资源由两种途径一种是网络资源,一种是加载本地资源

加载网络资源

  webView.LoadUrl(url);//url就是一个网址字符串 "http://www.baidu.com"

  加载本地资源,本地的网页一般放在asset文件夹中,如果如下方式访问。

  webView.loadUrl("file://android_asset/examle.html");

3,需要设置网页通过webview去打开,而不是调用本地浏览器或者第三方浏览器打开,如果不设置该项,那么网页会默认从手机自带的浏览器选择打开。

 //覆盖android自带的浏览器或者第三方浏览器,使得网页可以在webview中打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//返回值为true时控制网页在webview中打开,如果为false,那么在第三方或者系统浏览器中打开
//return super.shouldOverrideUrlLoading(view, url);
view.loadUrl(url);
return true;
}
});

  4,如果网页有JavaScript,那么还需要设置webview支持JavaScript

 //启用支持javascript
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);

  5,就是需要重定义返回按键,因为如果直接点击手机虚拟按键,那么应用程序就会直接退出,而不是返回上一网页。

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){ if(webView.canGoBack()){
webView.goBack();//返回上一页
return true;
}
else
{
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}

  6,判断网页的加载进度。

 webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
// super.onProgressChanged(view, newProgress);
if(newProgress == 100){
//网页正在加载
setProgressBarVisibility(false);
}
else
{
//网页加载完毕
setProgress(newProgress*100);
setProgressBarVisibility(true);
}
}
});

  7,加快网页加载速度,使用缓存技术

   优先使用缓存
webview.getSetting().setCacheMode(WwebSetting.LOAD_CACHE_ELSE_NETWORK);
不优先使用缓存
webview.getSetting().setCacheMode(WwebSetting.LOAD_NO_CACHE);
*/

android学习笔记WebView的基本使用的更多相关文章

  1. 【转】Pro Android学习笔记(二三):用户界面和控制(11):其他控件

    目录(?)[-] Chronometer计时器控件 倒计时CountDownTimer Switch控件 Space控件 其他控件 Android提供了很多控件,基本上都是view的扩展. Chron ...

  2. Android 学习笔记之Volley(七)实现Json数据加载和解析...

    学习内容: 1.使用Volley实现异步加载Json数据...   Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...

  3. Android学习笔记进阶之在图片上涂鸦(能清屏)

    Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...

  4. android学习笔记36——使用原始XML文件

    XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...

  5. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

  6. udacity android 学习笔记: lesson 4 part b

    udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...

  7. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  8. Android学习笔记之Activity详解

    1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...

  9. Pro Android学习笔记 ActionBar(1):Home图标区

     Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...

随机推荐

  1. [Android FrameWork 6.0源码学习] View的重绘过程

    View绘制的三部曲,  测量,布局,绘画今天我们分析测量过程 view的测量是从ViewRootImpl发起的,View需要重绘,都是发送请求给ViewRootImpl,然后他组织重绘在重绘的过程中 ...

  2. python编程快速上手之第7章实践项目参考答案

    #!/usr/bin/env python3.5 #coding:utf-8 import re # 7.18.1 # 强口令检测 # 写一个函数,使用正则表达式,确保传入的口令字符串是强口令 # 长 ...

  3. 反编译Unity3D手机游戏

    [旧博客转移 - 2015年11月17日 10:08] 现在大部分U3D手游都没有进行加密处理,要反编译其实很简单 APK是安卓的安装包,安卓是基于Linux的,Linux的安装包一般都是zip,所以 ...

  4. 如何在java中用Arraylist中实现冒泡排序的问题

    众所周知,冒泡排序法在一般数组中就3步, if(a<b){ temp=a; a=b; b=temp; } 然而,在集合中就不是简单的交换一下了,因为交换之后,必须保证新的值被重新设置到集合中去. ...

  5. javascript面向对象个人理解

    1. javascript面向对象特性:抽象性,封装性,继承性: 2. js中的对象:键值对的集合:比如说{key:value} 3.抽象性:用一个对象描述一个数据,需要抽取这个对象的核心数据:两个必 ...

  6. 网络爬虫——针对任意主题批量爬取PDF

    |本文为博主原创,转载请说明出处 任务需求:要求通过Google针对任意关键字爬取大量PDF文档,如K-means,KNN,SVM等. 环境:Anaconda3--Windows7-64位--Pyth ...

  7. 深入理解 JavaScript(一)

    编写高质量 JavaScript 代码的基本要点 转载:http://wiki.jikexueyuan.com/project/javascript-depth-understanding/start ...

  8. css中的层叠性及权重的比较

    假如同一个标签被多个选择器选中,每个选择器都设置了相同的样式,浏览器中加载时这个样式听谁的? 不同选择器设置的同一个样式,只会选择一个进行加载,不会叠加. 为了解决听谁的问题,引入层叠性的概念. 层叠 ...

  9. Mybaits简诉

    先组织一下语言!Mybatis是一个框架,一个数据持久化的框架,作用就是SQL语句的映射!减少了JDBC繁琐的数据操作与类型转换!简而言之,就是方便.轻巧!什么是持久化,持久,恩,JDBC就是一个数据 ...

  10. Laravel 日志查看器 导入log-viewer扩展

    1.修改配置文件 config\app.php中  'log'=>'daily' 日志文件是按天生成的 2.在项目目录中composer命令安装扩展:composer require arcan ...