




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WebView基本使用WebView是View的一个子类,可以让你在activity中显示网页。可以在布局文件中写入WebView:比如下面这个写了一个填满整个屏幕的WebView:加载一个网页,使用loadUrl():WebView myWebView = (WebView) findViewById(R.id.webview);myWebView.loadUrl();注意要在manifest中加上访问网络的权限: . 设置WebView要显示的网页设置WevView要显示的网页方法有很多:互联网页面直接用:myWebView.loadUrl(““);本地文件用:myWebView.loadUrl(“file:/android_asset/XX.html“); 本地文件存放在:assets文件中。还可以直接载入html的字符串,如:String htmlString = TitleThis is HTML textFormatted in italicsAnothor Line;/ 载入这个html页面myWebView.loadData(htmlString, text/html, utf-8);在WebView中使用JavaScript如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript。一旦使能之后,你也可以自己创建接口在你的应用和JavaScript代码间进行交互。使能JavaScript可以通过getSettings()获得WebSettings,然后用setJavaScriptEnabled()使能JavaScript:WebView myWebView = (WebView) findViewById(R.id.webview);WebSettings webSettings = myWebView.getSettings();webSettings.setJavaScriptEnabled(true);WebSettings中提供了很多有用的设置。处理页面浏览当用户点击了你的WebView中的一个链接,默认的行为是Android启动一个处理URL的应用,通常,默认的浏览器打开并下载目标URL。但是,你可以在你的WebView中覆盖这一行为,使得连接仍在你的WebView中打开。之后,根据在WebView中维护的网页浏览历史,你可以允许用户向前或向后浏览他们的网页。在WebView中打开所有链接要打开用户点击的链接,只需要用setWebViewClient()方法向你的WebView提供一个WebViewClient比如:WebView myWebView = (WebView) findViewById(R.id.webview);myWebView.setWebViewClient(new WebViewClient();此时就OK了, 就可以在你的WebView中打开链接了。关于打开链接位置的更多控制如果你对在哪里打开链接需要更多的控制,你可以创建自己的类,继承WebViewClient,然后覆写shouldOverrideUrlLoading()方法。比如下面这个: private class MyWebViewClient extends WebViewClient Override public boolean shouldOverrideUrlLoading(WebView view, String url) if(Uri.parse(url).getHost().equals() / This is my web site, so do not override; let my WebView load / the page return false; / Otherwise, the link is not for a page on my site, so launch / another Activity that handles URLs Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url); startActivity(intent); return true; 将特定的链接用自己的WebView打开,其他链接用浏览器(intent启动了默认的处理URL的Activity)。定义完之后把这个类的对象传入setWebViewClient()方法即可。WebView myWebView = (WebView) findViewById(R.id.webview);myWebView.setWebViewClient(new MyWebViewClient();实践验证:在直接设置setWebViewClient(new WebViewClient();时验证正确,即所有链接都是在WebView中打开。在设置为自定义的WebViewClient子类对象时,发现链接仍然都是从默认浏览器中打开。浏览网页历史回退当你的WebView覆写了URL载入的行为,它会自动地对访问过的网页积累一个历史,你可以利用goBack()和goForward()方法在这个历史中前进或后退。比如说使用后退键进行网页后退: /* * 按键响应,在WebView中查看网页时,按返回键的时候按浏览历史退回,如果不做此项处理则整个WebView返回退出 */ Override public boolean onKeyDown(int keyCode, KeyEvent event) / Check if the key event was the Back button and if theres history if (keyCode = KeyEvent.KEYCODE_BACK) & myWebView.canGoBack() / 返回键退回 myWebView.goBack(); return true; / If it wasnt the Back key or theres no web page history, bubble up / to the default / system behavior (probably exit the activity) return super.onKeyDown(keyCode, event); canGoBack()方法在网页可以后退时返回true。类似的,canGoForward()方法可以检查是否有可以前进的历史记录。如果你不执行这种检查,一旦goBack()和goForward()方法到达历史记录顶端,它们将什么也不做。如果不加这种设置,在用户按下Back键时,如果是WebView显示网页,则会将WebView作为整体返回。程序实例附上完整的程序:import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import .Uri;import android.os.Bundle;import android.view.KeyEvent;import android.view.Menu;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;SuppressLint(SetJavaScriptEnabled)public class WebActivity extends Activity private WebView myWebView = null; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); / 打开网页 myWebView = (WebView) findViewById(R.id.webview); / / myWebView.loadUrl(/mengdd/);/ 博客链接 myWebView.loadUrl(/);/ 百度链接 / JavaScript使能(如果要加载的页面中有JS代码,则必须使能JS) WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); / 在WebView中打开链接(默认行为是使用浏览器,设置此项后都用WebView打开) / myWebView.setWebViewClient(new WebViewClient(); / 这样设置后所有的链接都会在当前WebView中打开 / 更强的打开链接控制:自己覆写一个WebViewClient类:除了指定链接从WebView打开,其他的链接默认打开 myWebView.setWebViewClient(new MyWebViewClient(); Override public boolean onCreateOptionsMenu(Menu menu) getMenuInflater().inflate(R.menu.activity_web, menu); return true; /* * 自定义的WebViewClient类,将特殊链接从WebView打开,其他链接仍然用默认浏览器打开 * * author 1 * */ private class MyWebViewClient extends WebViewClient Override public boolean shouldOverrideUrlLoading(WebView view, String url) if (Uri.parse(url) .getHost() .equals(/mengdd/archive/2013/02/27/2935811.html) | Uri.parse(url).getHost() .equals(/) / This is my web site, so do not override; let my WebView load / the page / 这是官网上的例子,但是我点击特定链接的时候仍然是用浏览器而不是用自己的WebView打开,加上下面这句view.loadUrl(url)仍然是用浏览器,无解,不知道哪里出了问题 / view.loadUrl(url); return false; / Otherwise, the link is not for a page on my site, so launch / another Activity that handles URLs Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url); startActivity(intent); return true; /* * 按键响应,在WebView中查看网页时,按返回键的时候按浏览历史退回,如果不做此项处理则整个WebView返回退出 */ Override public boolean onKeyDown(int keyCode, KeyEvent event) / Check if the key event was the Back button and if theres history if (keyC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 春节后返京安全培训
- 城市交通规划合同续签咨询重点基础知识点
- 工厂人员技能与安全培训体系
- 车辆配件购销合同协议
- 超市零食承包协议合同
- 选秀球员青训合同协议
- 车位兜底代理合同协议
- 进境维修物品担保合同协议
- 通信销售总包合同协议
- 公司入职培训
- 《致大海》00省公开课金奖全国赛课一等奖微课获奖课件
- 数字贸易学 课件 第16章 智慧物流与海外仓
- 《游园不值》1省公开课一等奖全国示范课微课金奖课件
- 广东省广州市2022-2023学年八年级下学期语文期中试卷(含答案)
- 防藏药的护理措施
- 高中物理 选修一《机械振动》大单元教学设计
- PLC在建筑物自动化和智能化中的应用
- 第11课《及时治小伤》教学设计
- 数据分析与评价控制程序
- 神经外科轮转出科小结护士
- 体育运动中的功能性训练
评论
0/150
提交评论