一、WebView

1、简述

WebView(网络视图)内置WebKit引擎,能加载显示网页,还支持JS,并且能够在Android平台使用AJAX
WebView可以在布局中声明,也可以在Activity中直接实例化

2、主要步骤

使用WebView 的主要步骤:
1.在布局文件中声明WebView,通过findViewById或在Activity中实例化WebView组件:WebView webView = new WebView(this);
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
互联网用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/Todos.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET" />

3、实例演示

Activity代码:

 1 @Override
 2     public void onCreate(Bundle savedInstanceState) {
 3         super.onCreate(savedInstanceState);
 4         getWindow().requestFeature(Window.FEATURE_PROGRESS);
 5         setContentView(R.layout.activity_main);
 6         wv = (WebView) findViewById(R.id.wv);
 7         wv.setWebChromeClient(new WebChromeClient() { // 为WebView设置WebChromeClient
 8             @Override
 9             public void onProgressChanged(WebView view, int newProgress) {// 重写onProgressChanged方法
10                 MainActivity.this.setProgress(newProgress * 100);
11             }
12         });
13         wv.setWebViewClient(new WebViewClient() { // 为WebView设置WebViewClient
14             public void onReceivedError(WebView view, int errorCode,
15                     String description, String failingUrl) {// 重写onReceivedError方法
16                 Toast.makeText(MainActivity.this, "Sorry!" + description,
17                         Toast.LENGTH_SHORT).show();
18             }
19         });
20         Button btn = (Button) findViewById(R.id.btn); // 获取Button对象
21         btn.setOnClickListener(new View.OnClickListener() { // 为Button对象设置OnClickListener监听器
22             @Override
23             public void onClick(View v) {
24
25                 EditText et = (EditText) findViewById(R.id.et); // 获得WebView对象
26                 String url = et.getText().toString().trim();
27                 if (URLUtil.isNetworkUrl(url)) { // 判断是否是网址
28                     wv.loadUrl(url);
29                 } else {
30                     Toast.makeText(MainActivity.this, "对不起,您输入的网址有错。",
31                             Toast.LENGTH_SHORT).show();
32                     et.requestFocus(); // 将焦点移到EditText
33                 }
34             }
35         });
36         // 设置前进后退按钮
37         Button btnForward = (Button) findViewById(R.id.btnForward);
38         btnForward.setOnClickListener(new View.OnClickListener() {
39             @Override
40             public void onClick(View v) {
41                 if (wv.canGoForward()) { // 判断是否能够前进
42                     wv.goForward();
43                 } else {
44                     Toast.makeText(MainActivity.this, "对不起,您现在不能前进!",
45                             Toast.LENGTH_SHORT).show();
46                 }
47             }
48         });
49         Button btnBack = (Button) findViewById(R.id.btnBack);
50         btnBack.setOnClickListener(new View.OnClickListener() {
51             @Override
52             public void onClick(View v) {
53                 if (wv.canGoBack()) { // 判断是否能够前进
54                     wv.goBack();
55                 } else {
56                     Toast.makeText(MainActivity.this, "对不起,您现在不能后退!",
57                             Toast.LENGTH_SHORT).show();
58                 }
59             }
60         });
61     }

第一次输入网址运行报错:

原因是没有在AndroidManifest配置权限,加入权限:

1 <uses-permission android:name="android.permission.INTERNET" />

再次输入博客园首页网址点击'浏览':

竟然出现一张美女图片,无意中发现个彩蛋,网址输成http://www.cnblog.com/  ,漏了个s

重新输入网址浏览:

上面有个进度条显示网页加载进度,多输入几个网址测试'前进','后退'的功能。

再输入本地文件测试,显示以前写的待办事项网页

注意:在输入本地文件网址时,代码要把判断是否是网址URLUtil.isNetworkUrl(url)去掉,因为不会识别file:///为网址

1                 //if (URLUtil.isNetworkUrl(url)) { // 判断是否是网址
2                     wv.loadUrl(url);
3                 //} else {
4                 //    Toast.makeText(MainActivity.this, "对不起,您输入的网址有错。",
5                 //            Toast.LENGTH_SHORT).show();
6                 //    et.requestFocus(); // 将焦点移到EditText
7                 //}

转载于:https://www.cnblogs.com/aiguozhe/p/3602387.html

android学习日记15--WebView(网络视图)相关推荐

  1. android学习日记 RecyclerView的简单使用

    android学习日记 RecyclerView的简单使用 文章目录 android学习日记 RecyclerView的简单使用 一.如何使用RecyclerView? 二.使用步骤 1.首先在bui ...

  2. Android学习日记 Notification 通知

    Android学习日记 Notification 通知 文章目录 Android学习日记 Notification 通知 前言 使用步骤 总结 前言 下拉状态栏显示的通知功能 使用步骤 代码如下: p ...

  3. android有关的笔记,android学习笔记1——webview相关

    上了快两个星期班了,也没有什么具体的任务安排给我,只是有些小的需求让我改动一下,总体来说,现在我比较闲.又想到自己android的基础其实很薄弱,所以决定重新开始,深入的学习android. 从web ...

  4. Android学习系列(15)--App列表之游标ListView(索引ListView)

    游标ListView,提供索引标签,使用户能够快速定位列表项.       也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧.       一看图啥都懂了: ...

  5. Android 学习 笔记_09. WIFI网络操作

    1.概念 2.wifi网卡的状态 WIFI_STATE_DISABLED:wifi网卡不可用(1) WIFI_STATE_DISABLING:wifi正在关闭(0) WIFI_STATE_ENABLE ...

  6. android学习日记12--布局管理器

    1.概述 布局管理器的用途: a.可以更好的管理组件; b.通过使用布局管理器,Android应用程序可以做到平台无关性 布局管理器都是ViewGroup的子类,所有可充当容器的父类都是ViewGro ...

  7. android学习日记一

    这几天在公司实习,公司主要是做android项目,以前在学校也学习过android,但是就学了点皮毛,在这里我准备把自己当做android一无所知的人,但是java会点的人,来系统的学习一下andro ...

  8. android学习日记16--GridView(网格视图)

    一.GridView 1.简述 GridView按照行列来显示图片或文本的一种视图,排列其实有点类似TableLayout布局, 不过和TableLayout还是差别很大的,倒比较像二维的ListVi ...

  9. android学习日记13--数据存储之SharedPreference

    android 数据存储 作为一个完整的应用程序,数据存储必不可少.android 提供了五种不同的数据存储方式:SharedPreferences.SQLite.ContentProvider.文件 ...

最新文章

  1. 网络营销外包——网络营销外包专员如何系统化梳理网站优化方法
  2. 定时器和promise_Promise面试题,控制异步流程
  3. 时光机穿梭---撤销修改
  4. pycharm里面下载pip(不用去官网)
  5. java sendmessage函数_vc中SendMessage自定义消息函数用法实例
  6. Git常用指令——持续补充中
  7. Python实现爬取豆瓣电影|python豆瓣全栈爬虫:电影系列全爬虫系统1.0:(信息,短评,影评,海报)|你想爬的都有
  8. cesium加载批量模型
  9. 国外免费服务器 win系统,FreeSSHd一个免费的SSH服务器的Windows | MOS86
  10. red-hat Linux6-5的安装
  11. synchronize偏向锁底层实现原理
  12. 数学模型——初步理解马尔可夫链(Markov chain)
  13. 文件或内容损坏无法读取 导致无法删除
  14. ibm常用分析工具ha.jar,jca.jar
  15. Gateway GPRS support node (GGSN) 相关资料
  16. 解密:顺丰是一家什么样的公司?
  17. 432 4.3.2 STOREDRV.Deliver; recipient thread limit exceeded
  18. electron入门——安装及创建项目
  19. 2021-2027中国建筑紧固件市场现状及未来发展趋势
  20. stc15f2k60s2开发板

热门文章

  1. matebook13linux送U盘系统,HUAWEI MateBook 13笔记本U盘安装win10系统的操作教程
  2. cmake 多次编译_Part01_CMakeLists构建管理多个模块的C代码
  3. PSIM软件学习---08 C程序块的调用
  4. Linux学习笔记---使用tftp命令下载文件
  5. QScrollArea滚动条
  6. Extjs 从grid中导出Excel表格。后台为C#(绝对好用)
  7. 11_条件随机场CRF1_统计学习方法
  8. Oracle 10g 完全卸载(windows平台和linux平台)
  9. Java :内部类基础详解
  10. Office 365 机器人(Bot)开发入门