当前位置: 首页 > 编程日记 > 正文

Android开发学习笔记:WebView 一

WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:

第一种方法的步骤:

1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);

2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
  互联网用:webView.loadUrl("http://www.google.com"); 
  本地文件用:webView.loadUrl("file:///android_asset/XX.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" />

下面是具体例子:

MainActivity.java

 1 package com.android.webview.activity;  
 2  
 3 import android.app.Activity;  
 4 import android.os.Bundle;  
 5 import android.view.KeyEvent;  
 6 import android.webkit.WebView;  
 7  
 8 public class MainActivity extends Activity {  
 9     private WebView webview;  
10     @Override 
11     public void onCreate(Bundle savedInstanceState) {  
12         super.onCreate(savedInstanceState);  
13         //实例化WebView对象  
14         webview = new WebView(this);  
15         //设置WebView属性,能够执行Javascript脚本  
16         webview.getSettings().setJavaScriptEnabled(true);  
17         //加载需要显示的网页  
18         webview.loadUrl("http://www.51cto.com/");  
19         //设置Web视图  
20         setContentView(webview);  
21     }  
22       
23     @Override 
24     //设置回退  
25     //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法  
26     public boolean onKeyDown(int keyCode, KeyEvent event) {  
27         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {  
28             webview.goBack(); //goBack()表示返回WebView的上一页面  
29             return true;  
30         }  
31         return false;  
32 } 

在AndroidManifest.xml文件中的17行添加权限

 1 <?xml version="1.0" encoding="utf-8"?> 
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 3       package="com.android.webview.activity" 
 4       android:versionCode="1" 
 5       android:versionName="1.0"> 
 6     <uses-sdk android:minSdkVersion="10" /> 
 7  
 8     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
 9         <activity android:name=".MainActivity" 
10                   android:label="@string/app_name"> 
11             <intent-filter> 
12                 <action android:name="android.intent.action.MAIN" /> 
13                 <category android:name="android.intent.category.LAUNCHER" /> 
14             </intent-filter> 
15         </activity> 
16     </application> 
17     <uses-permission android:name="android.permission.INTERNET"/> 
18 </manifest> 

效果图:

第二种方法的步骤:

1、在布局文件中声明WebView

2、在Activity中实例化WebView

3、调用WebView的loadUrl( )方法,设置WevView要显示的网页

4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置  WebView视图

5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面

6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。

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

 下面是具体的例子:

MainActivity.java

 1 package com.android.webview.activity;  
 2  
 3 import android.app.Activity;  
 4 import android.os.Bundle;  
 5 import android.view.KeyEvent;  
 6 import android.webkit.WebView;  
 7 import android.webkit.WebViewClient;  
 8  
 9 public class MainActivity extends Activity {  
10     private WebView webview;  
11     @Override 
12     public void onCreate(Bundle savedInstanceState) {  
13         super.onCreate(savedInstanceState);  
14         setContentView(R.layout.main);  
15         webview = (WebView) findViewById(R.id.webview);  
16         //设置WebView属性,能够执行Javascript脚本  
17         webview.getSettings().setJavaScriptEnabled(true);  
18         //加载需要显示的网页  
19         webview.loadUrl("http://www.51cto.com/");  
20         //设置Web视图  
21         webview.setWebViewClient(new HelloWebViewClient ());  
22     }  
23       
24     @Override 
25     //设置回退  
26     //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法  
27     public boolean onKeyDown(int keyCode, KeyEvent event) {  
28         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {  
29             webview.goBack(); //goBack()表示返回WebView的上一页面  
30             return true;  
31         }  
32         return false;  
33     }  
34       
35     //Web视图  
36     private class HelloWebViewClient extends WebViewClient {  
37         @Override 
38         public boolean shouldOverrideUrlLoading(WebView view, String url) {  
39             view.loadUrl(url);  
40             return true;  
41         }  
42     }  
43 } 

main.xml

 1 <?xml version="1.0" encoding="utf-8"?> 
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 3     android:orientation="vertical" 
 4     android:layout_width="fill_parent" 
 5     android:layout_height="fill_parent" 
 6     >    
 7     <WebView   
 8         android:id="@+id/webview" 
 9         android:layout_width="fill_parent" 
10         android:layout_height="fill_parent" 
11         /> 
12 </LinearLayout> 

在AndroidManifest.xml文件中的17行添加权限

 1 <?xml version="1.0" encoding="utf-8"?> 
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 3       package="com.android.webview.activity" 
 4       android:versionCode="1" 
 5       android:versionName="1.0"> 
 6     <uses-sdk android:minSdkVersion="10" /> 
 7  
 8     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
 9         <activity android:name=".MainActivity" 
10                   android:label="@string/app_name"> 
11             <intent-filter> 
12                 <action android:name="android.intent.action.MAIN" /> 
13                 <category android:name="android.intent.category.LAUNCHER" /> 
14             </intent-filter> 
15         </activity> 
16     </application> 
17     <uses-permission android:name="android.permission.INTERNET"/> 
18 </manifest> 

效果图:

本文出自 “IT的点点滴滴” 博客,出处http://liangruijun.blog.51cto.com/3061169/647456

转载于:https://www.cnblogs.com/tonglingqijie/p/4689205.html

相关文章:

Linux Redis 高可用之主从复制

Redis主从复制简介 和MySQL主从复制的原因一样&#xff0c;Redis虽然读取写入的速度都特别快&#xff0c;但是也会产生读压力特别大的情况。为了分担读压力&#xff0c;Redis支持主从复制&#xff0c;Redis的主从结构可以采用一主多从或者级联结构&#xff0c;Redis主从复制可以…

别人总结的批处理技巧

1、不显示代码执行期间的各种提示信息   很多时候&#xff0c;为了使得屏幕上不出现无关的信息&#xff0c;我们需要屏蔽掉命令执行过程中产生的一些提示&#xff0c;有时候是屏蔽掉出错信息&#xff0c;有时候是为了屏蔽成功执行命令的信息&#xff0c;有时候两者都需要屏蔽…

h3c交换机端口加入vlan命令_华为交换机批量加入 Vlan 方法

华为交换机单独加入vlan太麻烦,思科交换机有批量加入vlan的方法,当然华为也有。要求 1~6口划分到vlan2,6~12口划分到vlan3,13~18口划分到vlan4,19~24口划分到vlan5.25,~26 加入trunk. 1、创建vlan 2~vlan4,4个vlan 创建vlan 2~vlan4,4个vlan 也可以使用命令 batch 2 to 5 2、…

我是如何设计 Upload 上传组件的

Upload 组件设计的目标是解决用户上传文件的便利性&#xff0c;但是中后台 Upload 组件的场景是多种多样的&#xff0c;所以可扩展能力是 Upload 组件不可忽视的另一方面。 同样为了大家能够更加容易的理解&#xff0c;我会从最原始的 input 标签开始说起 <form action"…

设计模式之资料摘录

本文主要是摘录了网上的一些资料&#xff0c;目前在慢慢学习这些东西&#xff0c;还谈不上个人的理解&#xff0c;离在项目中的应用也很遥远&#xff0c;后期会补上个人理解与实际项目中的应用 总体来说设计模式分为三大类&#xff1a; 创建型模式&#xff0c;共五种&#xff1…

Web.Config文件配置之连接默认错误页

在一些网站中&#xff0c;当网络地址发生错误时&#xff0c;通常会自动跳转到一个页面&#xff0c;并在该页面显示错误信息&#xff0c;此功能叶可以通过配置Web.Config文件配置实现。例如访问者在访问网站时出现错误&#xff0c;程序将跳转到默认页面error.aspx。在Web.Config…

新版rust怎么拆除建筑_市政工程造价怎么学 龙岗园林市政造价课程

课程对象&#xff1a;1、建筑相关专业或者非建筑专业应届毕业生&#xff1b;2、从事施工、资料、安全、招标等岗位&#xff0c;欲转岗做造价工作的人员&#xff1b;3、企业新入职工程造价人员&#xff1b;4、其他专业/行业&#xff0c;欲转行做造价的人员。5、已经在造价行业从…

HDFS Federation与HDFS High Availability详解

HDFS Federation    NameNode在内存中保存文件系统中每个文件和每个数据块的引用关系&#xff0c;这意味着对于一个拥有大量文件的超大集群来说&#xff0c;内存将成为限制系统横向扩展的瓶颈。在2.0发行版本系列中引入的Federation HDFS允许  系统通过添加NameNode实现扩…

win32的一个售票程序,收获有非常的多

先秀一下我的收获吧&#xff01; 1、在创建非模态对话框的时&#xff0c;需要用到createdialog函数&#xff0c;第二个参数需要注意是填写对话框的资源标识符&#xff08;id&#xff09;&#xff0c;之后需要调用showwindow来显示对话框&#xff1b;或者不这么做也行&#xff0…

从理论到实践 全面理解HTTP/2

前言 为了降低加载时间&#xff0c;相信大多数人都做过如下尝试 Keep-alive: TCP持久连接&#xff0c;增加了TCP连接的复用性&#xff0c;但只有当上一个请求/响应完全完成后&#xff0c;client才能发送下一个请求Pipelining: 可同时发送多个请求&#xff0c;但是服务器必须严格…

开机不进去桌面执行gui_电脑系统崩溃进不去,简单几步设置U盘,快速找回桌面重要文件...

hello~我可爱的粉丝们&#xff01;今天粮小白分享一个电脑系统崩溃无法开机&#xff0c;怎么把电脑数据保存备份的小技能&#xff0c;就来就点个关注吧。每天更新生活必备技能哦。电脑系统崩溃进不去&#xff0c;简单几步设置U盘&#xff0c;快速找回桌面重要文件近些年来&…

java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

http://www.cnblogs.com/jenson138/p/4691418.html import java.io.File;public class ReadDirectory {// 文件所在的层数private int fileLevel;/*** 生成输出格式* param name 输出的文件名或目录名* param level 输出的文件名或者目录名所在的层次* return 输出的字符串*/pu…

数据千万条,备份第一条,数据找不回,老板两行泪

2019独角兽企业重金招聘Python工程师标准>>> 开工第一天&#xff0c;请带着你的回忆看下文&#xff0c;想想你这些年删过的库&#xff0c;被删过的库。。。 数据库备份是个老生常谈的话题&#xff0c;看似很简单&#xff0c;但在实际操作过程中&#xff0c;运维人员…

【转】Visual Studio 2010 架构图之用例图(UML Use Case Diagram)

这篇文章是来自园子的&#xff0c;我只是把自己觉得重要的地方&#xff0c;做了更鲜明的标记和解释。 使用Visual Studio 2010可以在项目中添加架构图&#xff0c;项目可以是ASP.NET、Windows Forms、...&#xff0c;也可以创建单独的Modeling Projects。 可以通过下图方式在项…

spi通讯不需要地线吗_抖音真的需要养号吗?不需要!千万别被割了韭菜

“抖音新账号一定要先养号&#xff0c;再发布作品。”这句话&#xff0c;你是不是听很多人跟你讲过&#xff1f;包括我也曾在之前的推文里建议大家先养号&#xff0c;并且说的有理有据。&#xff08;要打脸了&#xff09;但是&#xff0c;这是一句谣传&#xff01;暂且不说谣言…

Linux学习之setjmp和longjmp函数

nsetjmp和longjmp函数实现函数之间的跳转(需包含头文件"setjmp.h")&#xff1a;函数原型&#xff1a;int setjmp(jmp_buf env); void longjmp(jmp_buf env, int val); setjmp函数用于设置跳转的目的位置&#xff0c;longjmp函数进行跳转。env&#xff1a;保留了需要返…

Ubuntu 和 Redhat / Fedora 服务管理命令对比表(附Fedora16新的服务管理工具systemctl )...

以 apache/httpd 服务作为例子 任务 Red Hat / Fedora Ubuntu Ubuntu (with sysv-rc-conf or sysvconfig) 立即启动/停止某服务 service httpd start invoke-rc.d apache start service apache start 启动时自动加载 chkconfig httpd on update-rc.d apache defaults…

酷派、华为不能打印log解决办法

我发现我的手机无法再eclipse里面输出自己打的log.i等log&#xff0c;一开始还以为是我手机root或刷过机的问题。 最终非常偶然找到了解决的方法&#xff1a; 酷派大神F1&#xff0c;F2在出厂时将log的级别做了限制。 解除限制的方法是&#xff1a;拨号盘输入*20121220# ->…

80070583类不存在_Java自学-接口与继承 内部类

&#xfeff;Java 内部类内部类分为四种&#xff1a; 非静态内部类 静态内部类 匿名类 本地类步骤 1 : 非静态内部类非静态内部类 BattleScore “战斗成绩” 非静态内部类可以直接在一个类里面定义比如&#xff1a; 战斗成绩只有在一个英雄对象存在的时候才有意义 所以实例化Ba…

java 初识对象和对象引用的关系

在接触java之前就知道了java的对象引用&#xff0c;但概念一直很模糊&#xff0c;看了《Head First in Java》后觉得书中的例子很有趣&#xff0c;便分享给大家。 首先要搞清对象引用是什么&#xff1f; 我们都知道变量可以存放数据&#xff0c;就像杯子一样&#xff0c;不同大…

IOS UI 代码创建UIButton,UITextField,UILabel

//add a Label UILabel *label[[UILabelalloc]initWithFrame:CGRectMake(100,20, 150, 40)]; [label setText:"i am a label "]; label.font[UIFontsystemFontOfSize:20]; label.textAlignmentNSTextAlignmentLeft; //文字内容自适应标签宽度 label.adjustsFontSizeT…

Hash join 和nested loop

Hash join 和nested loop 总所周知&#xff0c;Oracle数据库常用的两种优化器&#xff1a;RBO&#xff08;rule-based-optimizer&#xff09;和CBO(cost-based-optimizer)。目前更多地采用CBO(cost-based-optimizer)基于开销的优化器。在CBO方式下&#xff0c;Oracle会根据表及…

minus oracle 顺序_oracle minus的用法来一波

Oracle Minus关键字SQL中有一个MINUS关键字&#xff0c;它运用在两个SQL语句上&#xff0c;它先找出第一条SQL语句所产生的结果&#xff0c;然后看这些结果有没有在第二个SQL语句的结果中。如果有的话&#xff0c;那这一笔记录就被去除&#xff0c;而不会在最后的结果中出现。如…

我现在的vimrc配置文件

我现在的vimrc配置文件 runtime! debian.vim "设置编码 set encodingutf-8 set fencsutf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 set fileencodingsutf-8,ucs-bom,chinese"语言设置 set langmenuzh_CN.UTF-8" command WQ wq command Wq wq command W w…

UVA 10269 Adventure of Super Mario

UVA_10269 由于马里奥的飞行距离有限&#xff0c;因此为了方便处理&#xff0c;我们首先用floyd预处理出马里奥可以飞行的两点间的最短路&#xff0c;然后再将图分成K1层用SPFA求最短路即可。 #include<stdio.h>#include<string.h>#define MAXD 130#define MAXN 20…

“5G杀手级应用”Cloud VR 华为如何打响5G第一枪

雷锋网消息&#xff0c;近日华为在上海召开华为云 5G Cloud VR服务发布会暨5G Cloud VR开发者沙龙&#xff0c;Cloud VR有何潜力成为5G第一批杀手级应用&#xff0c;华为又在其中扮演怎样的角色。Cloud VR和5G更配生产决定消费&#xff0c;消费反作用于生产&#xff0c;对于5G也…

昆仑通态通用版找不到驱动_2021深圳新安西门子伺服驱动电机回收合作共赢

2021深圳新安西门子伺服驱动电机回收合作共赢 一个企业,应尽量做到PLC的机型统主要考虑到以下三方面问题&#xff1a;机型统其模块可互为备用,便于备品备件的采购和管理。机型统其功能和使用方法类似,有利于技术力量的培训和技术水平的提高。机型统其外部设备通用,资源可共享,易…

熟人Dubbo 系列1-Dubbo什么

Dubbo阿里巴巴内部SOA治理方案和服务的核心框架。每天2000 个服务提供3,000,000,000 次訪问量支持&#xff0c;并被广泛应用于阿里巴巴集团的各成员网站。Dubbo自2011年开源后&#xff0c;已被很多非阿里系公司使用。Dubbo[]是一个分布式服务框架&#xff0c;致力于提供高性能和…

CentOS源码安装GitLab汉化版第3版

软件版本&#xff1a; 软件版本CentOS7.5GraphicsMagick1.3.31Git2.21.0Ruby2.5.3Go1.12Node.js10.15.2PostgreSQL11.2Redis5.0.3GitLab11.8.0 汉化版Nginx1.14.21. 安装依赖 yum -y install libicu-devel patch gcc-c readline-devel zlib-devel libffi-devel openssl-devel m…

用JSP+JDBC开发Web程序

以前一直想找个纯粹的JSPJDBC开发Web程序的架构&#xff0c;一直没有找到合适的&#xff0c;后来自己写了一个简单实现&#xff0c;并实施了几个项目。 此开发架构的特点是&#xff1a; 1.架构技术简单&#xff0c;只包含JSP和JDBC&#xff0c;不需要学习即可快速开发Web应用&a…