android学习日记15--WebView(网络视图)
一、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(网络视图)相关推荐
- android学习日记 RecyclerView的简单使用
android学习日记 RecyclerView的简单使用 文章目录 android学习日记 RecyclerView的简单使用 一.如何使用RecyclerView? 二.使用步骤 1.首先在bui ...
- Android学习日记 Notification 通知
Android学习日记 Notification 通知 文章目录 Android学习日记 Notification 通知 前言 使用步骤 总结 前言 下拉状态栏显示的通知功能 使用步骤 代码如下: p ...
- android有关的笔记,android学习笔记1——webview相关
上了快两个星期班了,也没有什么具体的任务安排给我,只是有些小的需求让我改动一下,总体来说,现在我比较闲.又想到自己android的基础其实很薄弱,所以决定重新开始,深入的学习android. 从web ...
- Android学习系列(15)--App列表之游标ListView(索引ListView)
游标ListView,提供索引标签,使用户能够快速定位列表项. 也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧. 一看图啥都懂了: ...
- Android 学习 笔记_09. WIFI网络操作
1.概念 2.wifi网卡的状态 WIFI_STATE_DISABLED:wifi网卡不可用(1) WIFI_STATE_DISABLING:wifi正在关闭(0) WIFI_STATE_ENABLE ...
- android学习日记12--布局管理器
1.概述 布局管理器的用途: a.可以更好的管理组件; b.通过使用布局管理器,Android应用程序可以做到平台无关性 布局管理器都是ViewGroup的子类,所有可充当容器的父类都是ViewGro ...
- android学习日记一
这几天在公司实习,公司主要是做android项目,以前在学校也学习过android,但是就学了点皮毛,在这里我准备把自己当做android一无所知的人,但是java会点的人,来系统的学习一下andro ...
- android学习日记16--GridView(网格视图)
一.GridView 1.简述 GridView按照行列来显示图片或文本的一种视图,排列其实有点类似TableLayout布局, 不过和TableLayout还是差别很大的,倒比较像二维的ListVi ...
- android学习日记13--数据存储之SharedPreference
android 数据存储 作为一个完整的应用程序,数据存储必不可少.android 提供了五种不同的数据存储方式:SharedPreferences.SQLite.ContentProvider.文件 ...
最新文章
- 网络营销外包——网络营销外包专员如何系统化梳理网站优化方法
- 定时器和promise_Promise面试题,控制异步流程
- 时光机穿梭---撤销修改
- pycharm里面下载pip(不用去官网)
- java sendmessage函数_vc中SendMessage自定义消息函数用法实例
- Git常用指令——持续补充中
- Python实现爬取豆瓣电影|python豆瓣全栈爬虫:电影系列全爬虫系统1.0:(信息,短评,影评,海报)|你想爬的都有
- cesium加载批量模型
- 国外免费服务器 win系统,FreeSSHd一个免费的SSH服务器的Windows | MOS86
- red-hat Linux6-5的安装
- synchronize偏向锁底层实现原理
- 数学模型——初步理解马尔可夫链(Markov chain)
- 文件或内容损坏无法读取 导致无法删除
- ibm常用分析工具ha.jar,jca.jar
- Gateway GPRS support node (GGSN) 相关资料
- 解密:顺丰是一家什么样的公司?
- 432 4.3.2 STOREDRV.Deliver; recipient thread limit exceeded
- electron入门——安装及创建项目
- 2021-2027中国建筑紧固件市场现状及未来发展趋势
- stc15f2k60s2开发板
热门文章
- matebook13linux送U盘系统,HUAWEI MateBook 13笔记本U盘安装win10系统的操作教程
- cmake 多次编译_Part01_CMakeLists构建管理多个模块的C代码
- PSIM软件学习---08 C程序块的调用
- Linux学习笔记---使用tftp命令下载文件
- QScrollArea滚动条
- Extjs 从grid中导出Excel表格。后台为C#(绝对好用)
- 11_条件随机场CRF1_统计学习方法
- Oracle 10g 完全卸载(windows平台和linux平台)
- Java :内部类基础详解
- Office 365 机器人(Bot)开发入门